Java 如何为整个应用程序定义全局记录器?
我有几个类的应用程序,每个类都有自己的记录器(Java 如何为整个应用程序定义全局记录器?,java,logging,log4j,Java,Logging,Log4j,我有几个类的应用程序,每个类都有自己的记录器(logger log=logger.getLogger(this.class))。每个类都有需要记录的方法 有没有办法定义logger(而不是“this.class”)使所有类都登录到一个appender(一个文件)中 如果可以借助VM选项(如-Dlog4j.configuration=…)来完成,那就太好了。每个文件都有一个单独的记录器实例,这并不意味着它们会被记录到不同的文件中。事实上,它们通常不是。将类作为参数提供给getLogger()方法的
logger log=logger.getLogger(this.class)
)。每个类都有需要记录的方法
有没有办法定义logger(而不是“this.class”)使所有类都登录到一个appender(一个文件)中
如果可以借助VM选项(如
-Dlog4j.configuration=…
)来完成,那就太好了。每个文件都有一个单独的记录器实例,这并不意味着它们会被记录到不同的文件中。事实上,它们通常不是。将类作为参数提供给getLogger()
方法的唯一目的是给它一个名称(在本例中是包含所有包的类的名称)
该名称有两个用途:首先,它可以像这样记录在您的消息中:
[main] INFO MyApp - Entering application.
[main] DEBUG com.foo.Bar - Did it again!
[main] INFO MyApp - Exiting application.
log4j.rootLogger=myfile
log4j.appender.myfile=org.apache.log4j.RollingFileAppender
log4j.appender.myfile.File=example.log
其次,您可以将其用于更细粒度的log4j配置:
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
可以在配置中控制写入日志的文件,例如:
[main] INFO MyApp - Entering application.
[main] DEBUG com.foo.Bar - Did it again!
[main] INFO MyApp - Exiting application.
log4j.rootLogger=myfile
log4j.appender.myfile=org.apache.log4j.RollingFileAppender
log4j.appender.myfile.File=example.log
你可以阅读更多信息
如果出于某种原因您不想将记录器绑定到您的类,您可以始终调用它,它返回一个具有特殊默认名称的记录器ROOT
事实上,每个文件都有一个单独的logger
实例并不意味着它们被记录到不同的文件中。事实上,它们通常不是。将类作为参数提供给getLogger()
方法的唯一目的是给它一个名称(在本例中是包含所有包的类的名称)
该名称有两个用途:首先,它可以像这样记录在您的消息中:
[main] INFO MyApp - Entering application.
[main] DEBUG com.foo.Bar - Did it again!
[main] INFO MyApp - Exiting application.
log4j.rootLogger=myfile
log4j.appender.myfile=org.apache.log4j.RollingFileAppender
log4j.appender.myfile.File=example.log
其次,您可以将其用于更细粒度的log4j配置:
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
可以在配置中控制写入日志的文件,例如:
[main] INFO MyApp - Entering application.
[main] DEBUG com.foo.Bar - Did it again!
[main] INFO MyApp - Exiting application.
log4j.rootLogger=myfile
log4j.appender.myfile=org.apache.log4j.RollingFileAppender
log4j.appender.myfile.File=example.log
你可以阅读更多信息
如果出于某种原因,您不想将记录器绑定到您的类,您可以随时调用它,它返回一个具有特殊默认名称ROOT
的记录器