内容简介:在生产环境的日志配置中新加了一个日志文件输出配置,如下注释处:这个新增的配置会在原有的日志文件 main.log 外,新增一个全新的日志文件 analysis.log 记录一些信息。结果上线后,不仅日志输出到了 analysis.log,同时也输出到了 main.log 中了一份,冗余了。Google 了一下,原来是原来,在如下的两个
在生产环境的日志配置中新加了一个日志文件输出配置,如下注释处:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{MM-dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\}:%L - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="error"/>
<param name="levelMax" value="off"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>
<appender name="DAILY_ROLLING_FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../log/main.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{MM-dd HH:mm:ss SSS\} %-5p] [%t] %c{3\}:%L - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="ERROR"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>
<!-- 新增配置开始 -->
<appender name="ANALYSIS_DAILY_ROLLING_FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="../log/analysis.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="INFO"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>
<appender name="ASYNC_ANALYSIS_DAILY_ROLLING_FILE" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="ANALYSIS_DAILY_ROLLING_FILE"/>
</appender>
<logger name="LOGGER_ANALYSIS">
<level value="INFO"/>
<appender-ref ref="ASYNC_ANALYSIS_DAILY_ROLLING_FILE"/>
</logger>
<!-- 新增配置结束 -->
<root>
<level value="ERROR"/>
<appender-ref ref="DAILY_ROLLING_FILE"/>
</root>
</log4j:configuration>
这个新增的配置会在原有的日志文件 main.log 外,新增一个全新的日志文件 analysis.log 记录一些信息。结果上线后,不仅日志输出到了 analysis.log,同时也输出到了 main.log 中了一份,冗余了。Google 了一下,原来是 root
和 additivity
的问题。
原来,在如下的两个 logger
中,存在着继承关系, LOGGER_ANALYSIS
是继承了 root
的
<logger name="LOGGER_ANALYSIS">
<level value="INFO"/>
<appender-ref ref="ASYNC_ANALYSIS_DAILY_ROLLING_FILE"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="DAILY_ROLLING_FILE"/>
</root>
继承,就意味着 LOGGER_ANALYSIS
是继承了 root
的 appender-ref
的,因此, LOGGER_ANALYSIS
不知输出到了自己的 appender
设置的文件 analysis.log 里,也会输出到 DAILY_ROLLING_FILE
对应的 main.log 里,也就是冗余了。
那么,怎么解决呢?很简单,让儿子不继承爸爸就好了,不做富二代,白手起家,自己打天下。
<logger name="LOGGER_ANALYSIS" additivity="false">
<level value="INFO"/>
<appender-ref ref="ASYNC_ANALYSIS_DAILY_ROLLING_FILE"/>
</logger>
注意上边的 additivity="false"
就这个设置,就声明和 root
脱离父子关系了,独立了。问题解决。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
国际游戏设计全教程
[美]迈克尔·萨蒙德 / 张然、赵嫣 / 中国青年出版社 / 2017-2 / 108.00元
你想成为一名电子游戏设计师吗?想知道《肯塔基0号路》《到家》《枪口》等独立游戏的制作理念及过程吗?想了解《戈莫布偶大冒险》《辐射3》《战争机器》中关卡设计的奥秘吗?本书用通俗易懂的文字介绍了在游戏开发与策划过程中,需要掌握的游戏设计原理和制作的基础知识,可以作为读者从“构思一个电子游戏”到“真正完成一个电子游戏”的完备指南。 本书以系统的游戏设计流程结合大量优秀的游戏设计案例进行讲解,让读者......一起来看看 《国际游戏设计全教程》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
RGB转16进制工具
RGB HEX 互转工具