有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java log4j不写入文件,而是写入控制台

我在基于Linux的系统中编写了一个小应用程序,在这个系统中,我使用slf4j库作为日志记录器

导入组织。slf4j。记录器; 导入组织。slf4j。伐木厂

我可以看到日志在控制台中可见,但没有附加到日志文件中

<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>


共 (4) 个答案

  1. # 1 楼答案

    问题中显示的配置为log4j 1.2格式

    log4j2.xml的格式不同。它是基于插件的,因此您不再需要指定附加器的类名

    请参阅Log4j2manual。它有许多配置示例

  2. # 2 楼答案

    您似乎错过了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>
    
  3. # 3 楼答案

    已经确定,为了解决上述问题,我必须包括sl4j-log4j网桥jar,我包括了log4j和sl4j单独的jar,因此我看不到编译错误,但网桥没有实现

    在移除单个jar并添加桥接jar之后,问题已经解决