2016-05-22 14 views
1

私は、次のlog4j2の設定があります。私の(Eclipseの)Webアプリケーションで出力ファイルのないlog4j2?

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
<Properties> 
    <Property name="LOG_DIR">${sys:web.root}/logs</Property> 
    <Property name="ARCHIVE">${LOG_DIR}/archive</Property> 
</Properties> 
<Appenders> 
    <Console name="console-log" target="SYSTEM_OUT"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
    </Console> 
    <RollingFile name="paypal-log" 
       fileName="${LOG_DIR}/paypal.log" 
       filePattern="${ARCHIVE}/paypal.log.%d{yyyy-MM-dd-hh-mm}.gz"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="5" modulate="true"/> 
     </Policies> 
    </RollingFile> 
</Appenders> 
<Loggers> 
    <Logger name="com.retailstore.paypal" level="info" additivity="false"> 
     <appender-ref ref="paypal-log" level="info"/> 
    </Logger> 
    <Root level="error" additivity="false"> 
     <AppenderRef ref="console-log"/> 
    </Root> 
</Loggers> 

は私が持っているクラスのcom.retailstore.paypal.paypalfunctionsを持っているの

private static final Logger logger = LogManager.getLogger(paypalfunctions.class.getName()); 
... 

logger.error("paypal error"); 

しかし、 Webcontentフォルダの下にlogs/paypal.logはありません。それはどこに現れるべきですか?ロガーを削除すると、コンソール出力が機能しているように見えます。 TRACEと

OUTPUT:

2016年5月23日19:24:復帰03231 HTTP-NIO-8080-EXEC-2 TRACEのPatternProcessor.getNextTime 2016/05/23-19:25:00.000、nextFileTime = 2016/05/23-19:24:00.000、prevFileTime = 2016/05/23-19:14:00.000、current = 2016/05/23-19:24:03.230、freq = EVERY_MINUTE 2016-05-23 19 :24:03,247 http-nio-8080-exec-2 TRACE DefaultRolloStrategy.purge()は15.0ミリ秒を要しました 2016-05-23 19:24:03,254 http-nio-8080-exec-2同期FileRenameActionを実行するDEBUG RollingFileManager [$ { sys:web.root} /logs/paypal.logから$ {sys:web.root} /logs/archive/paypal.log.2016-05-23-07-14、renameEmptyFiles = false] 2016-05-23 19:24:03,256 http-nio-8080-exec-2 DEBUG RollingFileManagエラーを非同期で実行するGzCompressAction [$ {sys:web.root} /logs/archive/paypal.log.2016-05-23-07-14〜$ {sys:web.root} /logs/archive/paypal.log.2016 -05-23-07-14.gz、deleteSource = true]

答えて

2

<Configuration status="trace">を設定してみてください。 これにより、log4j内部デバッグ文が表示され、log4jの設定方法を把握できます。ここで

を使用すると、システムプロパティが正しく設定されていない場合は、デフォルト値を定義する方法です。

<Properties> 
    <Property name="web.root">/path/to/web/root</Property> 
    <Property name="LOG_DIR">${sys:web.root}/logs</Property> 
    <Property name="ARCHIVE">${LOG_DIR}/archive</Property> 
</Properties> 

LOG_DIR今のシステムプロパティになりますが、見つからなかった場合には、値にフォールバックします設定で定義されています。

+0

ありがとう、私はそれを試し、返信します – user2908112

+0

それはどこにまだ分からない?? – user2908112

+0

私は〜/ログを試みましたが、私の家のディレクトリには何も表示されません。 – user2908112

0

web.rootシステムプロパティはどのように設定されていますか?ファイルは、そのディレクトリが指している場所の下のlogsディレクトリの下に表示されます。定義されていない場合、Log4jは$ {sys:web.root}という名前のディレクトリを作成し、ファイルはその下のlogsディレクトリに格納されます。

Remkoが示唆するように、トレースを有効にすると、作成された場所が明確に示されます。

+0

Tomcatの権利はありますか? – user2908112

+0

あなたは何を意味するのか分かりません。はい、このテクニックは、web.rootシステムプロパティを定義する限り、tomcatで動作します。 tomcatの下のどこかにファイルが存在するようにするには、$ {sys:catalina.home}または$ {sys:catalina.base}を使用することもできます。 – rgoers

+0

ありがとう、ログを保存するのに最適な場所を知らない – user2908112

関連する問題