java.util.logging: how to set level by logger package (or prefix)?

后端 未结 3 917
走了就别回头了
走了就别回头了 2020-12-10 04:45

My app uses many libraries and I\'m using java.util.logging for logging. I\'d like to be able to set different logging levels for each library by doing somethin

相关标签:
3条回答
  • 2020-12-10 05:16

    I was able to get it working like this:

    handlers= java.util.logging.ConsoleHandler
    
    .level= INFO
    
    java.util.logging.ConsoleHandler.level = ALL
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    
    com.myapp.level = ALL
    com.myapp.handler=java.util.logging.ConsoleHandler
    
    0 讨论(0)
  • 2020-12-10 05:19

    It would have been nice to control logging using only logging.properties:

    org = FINE
    com = SEVERE
    

    Unfortunately, the corresponding log must have actually been created. Changing your conf file won't do that work for you. Add the loggers yourself and it will work:

    private static final Logger ORG_ROOT_LOGGER = Logger.getLogger("org");
    private static final Logger COM_ROOT_LOGGER = Logger.getLogger("com");
    

    Nested loggers in your application work the same way:

    # perhaps in the main entry point for your application?
    private static final Logger APP_ROOT_LOGGER = Logger.getLogger("com.myapp");
    
    # in each package or class you want to have separately controlled loggers
    private static final Logger LOG = Logger.getLogger(HelloWorldApp.class.getName());
    
    # in logging.properties
    com.myapp.level = FINE  # sufficient to make all your loggers log as FINE
    com.myapp.HelloWorldApp.level = SEVERE  # turn off msgs from that particularly chatty app
    
    0 讨论(0)
  • 2020-12-10 05:23

    You shouldn't use "*". A sample logging.properties could be such as:

    handlers=java.util.logging.ConsoleHandler
    .level=ALL
    
    java.util.logging.ConsoleHandler.level = ALL
    java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
    
    org.datanucleus.level=WARNING
    org.datanucleus.handler=java.util.logging.ConsoleHandler
    
    com.myapp.level=FINE
    com.myapp.handler=java.util.logging.ConsoleHandler
    

    And if all "org" level should be logged as WARNING then

    org.level=WARNING
    org.handler=java.util.logging.ConsoleHandler
    
    0 讨论(0)
提交回复
热议问题