线上用的 jetty 服务器,版本升级后,其中一共三台服务器( A 、B 、C ),A 服务正常打印日志,而 B 、C 服务器升级后日志不打印了(img-server.log),只有在启动时会打印出一些 zookeeper 的信息。用的同一个 war 包,同样的 jetty 配置,都是 jetty 集成了 log4j 的方式。 项目中的 log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="A1" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="INFO" />
<param name="encoding" value="UTF-8" />
<param name="DatePattern" value="'.'yyyyMMdd" />
<param name="File" value="/x/x/x/img-server.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%x,%t] - [%c] - [%m]%n" />
</layout>
</appender>
<appender name="E1" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="ERROR" />
<param name="encoding" value="UTF-8" />
<param name="DatePattern" value="'.'yyyyMMdd" />
<param name="File" value="/x/x/x/img-error.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%x,%t] - [%c] - [%m]%n" />
</layout>
</appender>
<logger name="com.x.x.service.impl.TmpQueueImpl" additivity="false">
<level value="DEBUG" />
<appender-ref ref="CA" />
</logger>
<logger name="com.x.x.service.impl.TmpImageServiceImpl" additivity="false">
<level value="DEBUG" />
<appender-ref ref="CA" />
</logger>
<logger name="com.x.x.process.impl.GMTool" additivity="false">
<level value="DEBUG" />
<appender-ref ref="CA" />
</logger>
<root>
<level value="INFO" />
<appender-ref ref="CA" />
<appender-ref ref="E1" />
<appender-ref ref="A1" />
</root>
</log4j:configuration>
并且配置了${jetty_home}/etc/jetty-logging.xml
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="ServerLog" class="java.io.PrintStream">
<Arg>
<New class="org.eclipse.jetty.util.RolloverFileOutputStream">
<Arg><Property name="jetty.logs" default="/x/x/x"/>/yyyy_mm_dd.jetty-error.log</Arg>
<Arg type="boolean">false</Arg>
<Arg type="int">90</Arg>
<Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>
<Get id="ServerLogName" name="datedFilename"/>
</New>
</Arg>
</New>
<Call class="org.eclipse.jetty.util.log.Log" name="info"><Arg>Redirecting stderr/stdout to <Ref id="ServerLogName"/></Arg></Call>
<Call class="java.lang.System" name="setErr"><Arg><Ref id="ServerLog"/></Arg></Call>
<Call class="java.lang.System" name="setOut"><Arg><Ref id="ServerLog"/></Arg></Call>
</Configure>
然后输出的这个yyyy_mm_dd.jetty-error.log日志文件在 B 、C 两台服务器上出现大量的 debug 日志,而 A 服务器没有。
v2 这么多大佬,请问有遇到这样的问题吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.