log4j记录到控制台,但不记录文件blazeDS

log4j记录到控制台,但不记录文件blazeDS,log4j,blazeds,apache-commons-logging,Log4j,Blazeds,Apache Commons Logging,我在使用log4j时看到了奇怪的行为,对此我完全感到困惑。这是我第一次在BlazeDS上使用它,我希望这是我错过的一个小问题 在这个web应用程序中,我使用log4j从2个java类以及blazeDS进行日志记录。我通过org.springframework.flex.core.commonLoggingTarget将BlazeDS连接到commons日志中,然后使用log4j作为底层日志记录器 我已经在blazeds logger下为“Console”和“MyFile”设置了appender,

我在使用log4j时看到了奇怪的行为,对此我完全感到困惑。这是我第一次在BlazeDS上使用它,我希望这是我错过的一个小问题

在这个web应用程序中,我使用log4j从2个java类以及blazeDS进行日志记录。我通过org.springframework.flex.core.commonLoggingTarget将BlazeDS连接到commons日志中,然后使用log4j作为底层日志记录器

我已经在blazeds logger下为“Console”和“MyFile”设置了appender,当控制台输出按预期工作时,没有任何内容写入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>

%d%p%C{1.}[%t]%m%n
%d%p%C{1.}[%t]%m%n
services-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>

[布莱兹]
假的
假的
假的
假的
终点*
服务*
配置
火焰
终点*
服务*
配置

原来是Tomcat(log4j jcl)中丢失的jar文件导致了问题。一旦库与应用程序正确打包,日志记录就如预期一样工作。

刚刚遇到同样的问题。我目前正在使用struts2 webapp,无法将struts正确登录到文件中。我花了两天的时间拼命地修复它,幸运的是现在找到了你的答案。很高兴你写下来了!非常感谢,包括
log4jcl
依赖项解决了这个问题。一百万再次感谢:)