log4j 不写入文件,而是写入控制台
log4j not writing into file but its writing into console
我正在基于 Linux 的系统中创建一个小型应用程序,我在其中使用 slf4j 库作为记录器
导入组织slf4j.Logger;
导入组织。slf4j.Logger工厂;
我可以看到日志在控制台中可见,但没有附加到日志文件。
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}][%-5p][%-10t]%m%n" />
</layout>
</appender>
<!-- EXAMPLE logging setup NOTES: 1. files are written to "./logs/<filename>".
You must setup the environment so that ./logs is a symlink to the correct
location according to the EXAMPLE log standard. For example, "/opt/logs/".
If that's not possible, change the File setting in each appender appropriately. -->
<appender name="EXAMPLE_AUDIT" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="INFO" />
<param name="File" value="./logs/audit.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="20" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_AUDIT" />
</layout>
</appender>
<appender name="EXAMPLE_METRIC" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="DEBUG" />
<param name="File" value="./logs/metric.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_METRIC" />
</layout>
</appender>
<appender name="EXAMPLE_ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="ERROR" /> <!-- only WARN and ERROR are allowed in this log -->
<param name="File" value="./logs/error.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_ERROR" />
</layout>
</appender>
<appender name="EXAMPLE_DEBUG" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="DEBUG" />
<param name="File" value="./logs/debug.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="20" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_DEBUG" />
</layout>
</appender>
<logger name="com.rsg.EXAMPLE.audit" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_AUDIT" />
</logger>
<logger name="com.rsg.EXAMPLE.metrics" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_METRIC" />
</logger>
<logger name="com.rsg.EXAMPLE.error" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<logger name="com.rsg.EXAMPLE.debug" additivity="false">
<level value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_DEBUG" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="EXAMPLE_DEBUG" />
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.openEXAMPLE.agcp.commonFunction.input"
additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.openEXAMPLE.agcp.commonFunction.output"
additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.openEXAMPLE.agcp.commonFunction.error"
additivity="false">
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<!-- The EXAMPLE logging standard has four specific classes of logging that
are unrelated to subsystem logger names. If you want them activated, uncomment
this block. -->
<logger name="com.rsg.EXAMPLE.audit" additivity="false">
<level value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_AUDIT" />
</logger>
<logger name="com.rsg.EXAMPLE.metrics" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_METRIC" />
</logger>
<logger name="com.rsg.EXAMPLE.error" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<logger name="com.rsg.EXAMPLE.debug" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_DEBUG" />
</logger>
<logger name="com.rsg.ova.apiClient.http.HttpClient" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="com.rsg.ova.roman.client.impl.romanSimplerBatchPublisher"
additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
<appender-ref ref="CONSOLE" />
</logger>
我检查了您的 logback.xml 文件配置。似乎根标签("configuration")丢失了。你可以添加并检查它吗?
您的 xml 文件中似乎遗漏了根标记。请找到以下代码将日志写入文件。
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="128MB" />
<param name="maxBackupIndex" value="20" />
<param name="file" value="./logs/audit.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="file" />
</root>
问题中显示的配置是log4j 1.2格式。
log4j2.xml
的格式不同。它是基于插件的,所以你不需要再指定附加程序的 class 名称。
请参阅 Log4j2 manual。它有许多示例配置。
已确定我必须包含 sl4j-log4j 桥 jar 才能解决上述问题,我包含了 log4j 和 sl4j 单独的 jar,因此我看不到任何编译错误,但桥没有实现。
删除单个 jar 并添加 bridge jar 后问题已解决。
我正在基于 Linux 的系统中创建一个小型应用程序,我在其中使用 slf4j 库作为记录器
导入组织slf4j.Logger; 导入组织。slf4j.Logger工厂;
我可以看到日志在控制台中可见,但没有附加到日志文件。
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}][%-5p][%-10t]%m%n" />
</layout>
</appender>
<!-- EXAMPLE logging setup NOTES: 1. files are written to "./logs/<filename>".
You must setup the environment so that ./logs is a symlink to the correct
location according to the EXAMPLE log standard. For example, "/opt/logs/".
If that's not possible, change the File setting in each appender appropriately. -->
<appender name="EXAMPLE_AUDIT" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="INFO" />
<param name="File" value="./logs/audit.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="20" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_AUDIT" />
</layout>
</appender>
<appender name="EXAMPLE_METRIC" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="DEBUG" />
<param name="File" value="./logs/metric.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_METRIC" />
</layout>
</appender>
<appender name="EXAMPLE_ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="ERROR" /> <!-- only WARN and ERROR are allowed in this log -->
<param name="File" value="./logs/error.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_ERROR" />
</layout>
</appender>
<appender name="EXAMPLE_DEBUG" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="DEBUG" />
<param name="File" value="./logs/debug.log" />
<param name="MaxFileSize" value="128MB" />
<param name="MaxBackupIndex" value="20" />
<layout class="com.rsg.ova.logging.log4j.EXAMPLELayout">
<param name="ConversionPattern" value="EXAMPLE_DEBUG" />
</layout>
</appender>
<logger name="com.rsg.EXAMPLE.audit" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_AUDIT" />
</logger>
<logger name="com.rsg.EXAMPLE.metrics" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_METRIC" />
</logger>
<logger name="com.rsg.EXAMPLE.error" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<logger name="com.rsg.EXAMPLE.debug" additivity="false">
<level value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_DEBUG" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="EXAMPLE_DEBUG" />
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.openEXAMPLE.agcp.commonFunction.input"
additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.openEXAMPLE.agcp.commonFunction.output"
additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.openEXAMPLE.agcp.commonFunction.error"
additivity="false">
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<!-- The EXAMPLE logging standard has four specific classes of logging that
are unrelated to subsystem logger names. If you want them activated, uncomment
this block. -->
<logger name="com.rsg.EXAMPLE.audit" additivity="false">
<level value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="EXAMPLE_AUDIT" />
</logger>
<logger name="com.rsg.EXAMPLE.metrics" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_METRIC" />
</logger>
<logger name="com.rsg.EXAMPLE.error" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
</logger>
<logger name="com.rsg.EXAMPLE.debug" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_DEBUG" />
</logger>
<logger name="com.rsg.ova.apiClient.http.HttpClient" additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="com.rsg.ova.roman.client.impl.romanSimplerBatchPublisher"
additivity="false">
<level value="info" />
<appender-ref ref="EXAMPLE_ERROR" />
<appender-ref ref="CONSOLE" />
</logger>
我检查了您的 logback.xml 文件配置。似乎根标签("configuration")丢失了。你可以添加并检查它吗?
您的 xml 文件中似乎遗漏了根标记。请找到以下代码将日志写入文件。
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="128MB" />
<param name="maxBackupIndex" value="20" />
<param name="file" value="./logs/audit.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="file" />
</root>
问题中显示的配置是log4j 1.2格式。
log4j2.xml
的格式不同。它是基于插件的,所以你不需要再指定附加程序的 class 名称。
请参阅 Log4j2 manual。它有许多示例配置。
已确定我必须包含 sl4j-log4j 桥 jar 才能解决上述问题,我包含了 log4j 和 sl4j 单独的 jar,因此我看不到任何编译错误,但桥没有实现。
删除单个 jar 并添加 bridge jar 后问题已解决。