Log4j 写入 catalina.out
Log4j writes into catalina.out
我想将特定于应用程序的记录器重定向到 tomcat/logs/catalina.out.
的单独文件中
这是 log4j.xml 文件内容,位于 tomcat/lib 文件夹
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="RollingFiles" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${catalina.home}/logs/application.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p-%d-{%C}-%t-%x-%m%n"/>
</layout>
</appender>
<logger name="com.company">
<level value="debug"/>
</logger>
<root>
<priority value ="debug" />
<appender-ref ref="RollingFiles" />
</root>
</log4j:configuration>
这是 logging.properties 的内容,显示在 tomcat/conf 文件夹
中
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
但我仍然在 catalina.out 和 application.log 中获取所有记录器输出,但我不想要 [=41] 中的应用程序特定日志(即记录器名称="com.company") =].请帮助我。
Tomcat 版本:7.0.35
Java : 1.7.0_45
日志 4j:log4j-1.2.16.jar
尝试将 log4j.xml 文件移动到您的应用程序根目录下:
webapps/[你的应用]/WEB-INF/classes
这样您的日志记录就不会依赖于特定的 tomcat 安装,并且您可以在任何 tomcat 实例上部署您的应用程序而无需更改默认 tomcat 配置。
问题是,我在我的项目中引用了一个包含 org.pentaho.di.core.logging.LogWriter class 的 jar。它默认将控制台记录器添加到根记录器中。
修复方法是,将其从 LogWriter 中删除
我想将特定于应用程序的记录器重定向到 tomcat/logs/catalina.out.
的单独文件中这是 log4j.xml 文件内容,位于 tomcat/lib 文件夹
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="RollingFiles" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${catalina.home}/logs/application.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p-%d-{%C}-%t-%x-%m%n"/>
</layout>
</appender>
<logger name="com.company">
<level value="debug"/>
</logger>
<root>
<priority value ="debug" />
<appender-ref ref="RollingFiles" />
</root>
</log4j:configuration>
这是 logging.properties 的内容,显示在 tomcat/conf 文件夹
中handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
但我仍然在 catalina.out 和 application.log 中获取所有记录器输出,但我不想要 [=41] 中的应用程序特定日志(即记录器名称="com.company") =].请帮助我。
Tomcat 版本:7.0.35
Java : 1.7.0_45
日志 4j:log4j-1.2.16.jar
尝试将 log4j.xml 文件移动到您的应用程序根目录下: webapps/[你的应用]/WEB-INF/classes
这样您的日志记录就不会依赖于特定的 tomcat 安装,并且您可以在任何 tomcat 实例上部署您的应用程序而无需更改默认 tomcat 配置。
问题是,我在我的项目中引用了一个包含 org.pentaho.di.core.logging.LogWriter class 的 jar。它默认将控制台记录器添加到根记录器中。
修复方法是,将其从 LogWriter 中删除