我看到使用 log4j 的奇怪行为,我完全被难住了。这是我第一次将它与 BlazeDS 一起使用,我希望这是我错过的一个小问题。
在这个 Web 应用程序中,我使用 log4j 从 2 个 java 类以及 blazeDS 进行日志记录。我通过 org.springframework.flex.core.CommonsLoggingTarget 将 BlazeDS 连接到 commons-logging,然后使用 log4j 作为底层记录器。
我在 blazeds 记录器下为“Console”和“MyFile”设置了附加程序,当控制台输出按预期工作时,没有任何内容写入 MyFile。该文件实际上已创建,但保持在 0KB。另一方面,我的两个 java 类都很好地记录到控制台和它们的滚动文件。我在本地测试和部署到 Tomcat 时都看到了这种行为。
最后一个细节 - 在本地测试时,我将 MyFile 路径更改为绝对路径,并看到该文件已附加到。这会让我相信这是相对路径的问题,但是它在我的 java 日志记录中运行良好。
commons-logging.properties:
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="trace" debug="true">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/ImpactTradeQuery.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
<DefaultRolloverStrategy max="25"/>
</RollingFile>
<File name="MyFile" immediateFlush="true" fileName="logs/app.log">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="Console"/>
</root>
<logger name="flex.samples.trade.tradeService" level="trace" additivity="False">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</logger>
<logger name="flex.samples.ConnectionHelper" level="trace" additivity="False">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</logger>
<logger name="blazeds" level="trace" additivity="True">
<appender-ref ref="MyFile"/>
<appender-ref ref="Console"/>
</logger>
</loggers>
</configuration>
服务-config.xml:
<logging>
<target class="flex.messaging.log.ConsoleTarget" level="Error">
<properties>
<prefix>[BlazeDS] </prefix>
<includeDate>false</includeDate>
<includeTime>false</includeTime>
<includeLevel>false</includeLevel>
<includeCategory>false</includeCategory>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
<target class="org.springframework.flex.core.CommonsLoggingTarget" level="All">
<properties>
<categoryPrefix>blazeds</categoryPrefix>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
</logging>