State of Clojure 2021 survey

2021-01-18 Thread 'Alex Miller' via Clojure

It's that time of year again! Please complete the State of Clojure 2021 
survey, an important tool for tracking our community over the last decade.

https://www.surveymonkey.com/r/clojure2021

Thanks!

Alex

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/4b2f0893-4255-4bae-b8f0-d4134c590a24n%40googlegroups.com.


Log4j2 integration classloading woes

2021-01-18 Thread Dimitrios Piliouras

Hi folks,

I'm trying to integrate log4j2 (and its `MapMessage`) with 
tools.logging. Everything was going great until the moment I had to 
depend on this little library, from another project. Everything would 
work on the REPL, but `lein check` was failing with the most bizarre 
IOException (Stream closed) during compilation! I reported/asked about 
this to `duct-core` initially [1] (as it was a duct-based project), but 
it turns out that this doesn't really relate to duct. James 
(@weavejester) was kind enough to  attempt to explain this, and he 
basically concluded that (quoting straight from the ticket):


1. The Clojure classloader opens a stream to read
   |com.elcom.tools.logging.structured| from the jar.
2. The |clojure.tools.logging| namespace is then required and loaded.
3. Log4j is triggered from |clojure.tools.logging|, which then tries to
   read from the elcom-tools jar again, probably to load in your custom
   logging class or properties file.
4. This second read appears to close the first stream to
   |com.elcom.tools.logging.structured|, causing an IO error from the
   still-open reader.

Note that this only occurs when the classloader is trying to load from a 
jar. The moment the files are cached in the |target| directory, 
everything works fine.


Reproducing this requires that you download the two zips from the link 
below, install `elcom-tools` locally, and then doing `lein check` on 
`elcom-auth`.


I do have a workaround at this point, but at the same time, I'd love to 
understand what exactly is happening here. Many thanks in advance for 
any insights...


Kind regards,
Dimitris


[1]: https://github.com/duct-framework/core/issues/37 



--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups "Clojure" group.

To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/9a7c6d95-80f3-cb2a-5f3b-13c05ee97705%40gmail.com.