4

Log4j を使用して、プログラムのログを書きます。このサイトで多くの質問と回答を見つけて読みましたが、問題を解決できません。

ここに私のコード:

1.log4j.xml

<appender name="rollingfileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="append" value="true"/>
    <param name="file" value="logs/process.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
    <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [%c{1}] %m%n"/>
    </layout>
</appender>
<root>
    <level value="DEBUG"/>
    <appender-ref ref="rollingfileAppender"/>
    <appender-ref ref="stdout"/>
</root>

2.私のJavaコード

package TestPacket;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;


public class TestLog4jXML {
    static Logger logger = org.apache.log4j.Logger.getLogger(TestLog4jXML.class.getName());
    public TestLog4jXML() {
    }
    public static void main(String[] args) {
        try {
            DOMConfigurator.configure("log4j1.xml");
            logger.trace("Entering application.");
            logger.debug("Debug");
            logger.info("info");
            logger.warn("warn");
            logger.error("error");
            logger.fatal("fatal");
            lungtng();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void lungtng()
    {
        logger.fatal("some text here");
        logger.info("hello picaso");
    }
}

そして、Eclipse、Windows OSでプログラムを実行します。ただし、ログ ファイル名のみ: process.logは日次形式ではありません: process.log.yyyy-MM-dd-HH

誰が私にこれを説明できますか?

4

2 に答える 2

8

Windows を実行している場合、これは既知のバグのようです。

ここを参照してください: http://do.whileloop.org/2014/02/14/log4j-rolling-file-appenders-in-windows/

ここを参照してください: https://issues.apache.org/bugzilla/show_bug.cgi?id=29726

また、ここ: http://www.coderanch.com/t/424837/java/java/Log-log-file-rolled-day

解決策は、ここでエクストラを使用することのようです: http://logging.apache.org/log4j/extras/

正しいポリシーを定義して、このアペンダーを使用してみてください。

http://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/RollingFileAppender.html

于 2014-09-26T18:54:04.270 に答える
4

org.apache.log4j.DailyRollingFileAppender は、毎日、毎時間、または毎分ごとに新しいログ ファイルを作成しますが、現在のログのファイル名は常に「file」パラメーターで指定した形式になります。あなたの例では、「process.log」です。過去数時間のログのファイル名は、「process.log.yyyy-MM-dd-HH」の形式になります。

于 2012-10-26T10:19:13.407 に答える