I was thinking about capturing the call stack when you create the logger (to get the module), not when you call the logger.
cheers, Rémi ----- Mail original ----- > De: "Ralph Goers" <ralph.go...@dslextreme.com> > À: "Alex Sviridov" <ooo_satu...@mail.ru> > Cc: "Remi Forax" <fo...@univ-mlv.fr>, "jigsaw-dev" > <jigsaw-dev@openjdk.java.net> > Envoyé: Mercredi 3 Octobre 2018 05:08:27 > Objet: Re: Separate logging for JPMS module/layer > Log4j handles this by capturing the fully qualified class name of the logging > adapter. Obviously, this doesn’t work if the adapter doesn’t pass Log4j the > FQCN, but it does work for the adapters we support. That said, it is very > slow > to capture this and is probably the biggest pain point. Log4j recommends not > capturing this information in production environments because it is so slow. > Unfortunately, it seems to have gotten even slower in Java 9+. In an ideal > world we would be able to capture the caller information at compile time but > Java provides no good way to do this. Wouldn’t it be great if I could just > code > something like logger.error(_CallerInfo_, “hello”) and the compiler would > provide the caller info data structure that was generated by the compiler? > > FWIW, I do plan to add the module information to the caller information > provided > with Log4j but just haven’t gotten to it. You are more than welcome to provide > a patch. > > Ralph > >> On Oct 2, 2018, at 3:20 PM, Alex Sviridov <ooo_satu...@mail.ru> wrote: >> >> Thank you for you suggestion. But can this be used when some library >> uses one logging system and for another uses some bridge. Because of this >> bridging >> LoggerFactory.getLogger is called somewhere in bridge, as I understand, >> >> >>> Среда, 3 октября 2018, 1:12 +03:00 от Remi Forax <fo...@univ-mlv.fr>: >>> >>> You can use the StackWalker >>> https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackWalker.html >>> >>> regards, >>> Rémi >>> >>> ----- Mail original ----- >>>> De: "Alex Sviridov" < ooo_satu...@mail.ru > >>>> À: "jigsaw-dev" < jigsaw-dev@openjdk.java.net > >>>> Envoyé: Mardi 2 Octobre 2018 23:54:48 >>>> Objet: Separate logging for JPMS module/layer >>> >>>> Hi all, >>>> >>>> Could anyone say how the following problem can be solved. I want to create >>>> separate >>>> log file for every JPMS module/layer. The problem is that many >>>> libraries/programs >>>> use LoggerFactory.getLogger(String className) so in getLogger I have only >>>> the name of the class as String, so I can't get module and layer. >>>> >>>> If I had not String className, but Class klass then the problem would be >>>> easily >>>> solved. >>>> As I understand I can't load class by name because it would require all >>>> modules >>>> export >>>> their packages to logging framework that has no sense. >>>> >>>> Are there any solutions for such problem? >>>> >>>> >>>> -- >>>> Alex Sviridov >> >> >> -- > > Alex Sviridov