<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 在log4j的dtd中,明确定义了每个元素的顺序 <!ELEMENT log4j:configuration (renderer*,
throwableRenderer?,appender*,plugin*, (category|logger)*,root?,(categoryFactory|loggerFactory)?)>
如果不按照顺序,启动服务的时候会有警告 -->
<!-- 日志级别 日记记录的优先级priority,优先级由高到低分为 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG
,ALL。 Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。 -->
<!-- 所有的Appender 记录 -->
<!-- 控制台的Appender 输出 -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c{2} %X{traceId}- %m%n" />
</layout>
</appender>
<!-- 文件的输出 -->
<appender name="normal-appender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Encoding" value="UTF-8" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd"></param>
<param name="File"
value="/var/log/java/tradeuser/manager_serv/managerHandler.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c{2} %X{traceId}-%m%n" />
</layout>
</appender>
<!-- eagleye的输出 -->
<appender name="eagleye" class="com.eagleye.client.log4jappender.EagleyeAppender">
<!-- 这里的名称就是eagleye-admin中提到的app , eagleye会按照这个进行约定预警规则的绑定,可以和application name(loom中的)一致 -->
<param name="app" value="managerServApp" />
<layout class="org.apache.log4j.PatternLayout" />
</appender>
<!--loom 和启动日志 没有调用日志 除非发生错误 这里设置的additivity 是 是否传送到上游 root 里面,如果默认或者设置为true 就会传送到Root里面造成打印两次-->
<logger name="com.loom" additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="normal-appender" />
</logger>
<!-- 服务启动日志 -->
<logger name="com.manager.controller" additivity="false">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="normal-appender" />
</logger>
<!-- 本地存储的日志格式-->
<logger name="com" additivity="false">
<level value="INFO" />
<appender-ref ref="eagleye" />
<appender-ref ref="normal-appender" />
</logger>
<!-- 所有的错误日志将其输出到 console中 进行查看 -->
<root>
<priority value="ERROR" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration
以上问题主要是因为每次收集的日志还会上传到console的控制台输出一份,不止在本地文件进行输出,还在控制台输出,运维对我们的日志是完全备份的,这样就带来了,重复日志存储两份的情况,所以使用这种方式进行优化。
但是也会带来不好的地方,不好的地方就是,在开发的时候看不到控制台输出的日志了,建议在开发的时候吧root的 权限改为info