如何在控制台和文件上进行Java日志记录?

时间:2012-05-18 23:13:41

标签: java logging

public class MyUtil {

    public static boolean showLogging;
    public static boolean saveLogging;

public static void log(Object s) {
        if (showLogging) {
            // show logging on console
        }
        if (saveLogging) {
            // save logging to file and append logging old file when it is created
        }
}
}

这是我目前的想法。 我听说过log4j,但对我来说太复杂了。

所以我只想要一些在控制台上打印日志的简单方法,并根据用户配置将其写入文件。

2 个答案:

答案 0 :(得分:1)

使用日志框架(例如JDK中的日志框架),并将其配置为记录到这两个位置。他们为您解决了这些问题。

由于像log4j这样的框架很普遍,大多数人都会对此进行标准化并使用相同的日志记录框架,因此所有内容都会转到同一个地方。 (即,他们使用已经使用log4j的第三方库。)

以下是您可能想要阅读的内容,以了解这些框架的工作方式(大多数是相似的): http://logging.apache.org/log4j/1.2/manual.html

在本文档中向下滚动一下以查看一些真实示例

答案 1 :(得分:0)

使用log4j

首先定义log4j.xml,它定义控制台和文件appender,如下所示:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
    <appender name="CA" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
        </layout>
    </appender>
    <appender name="Daily" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="logs/sample.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] - %m%n%n%n" />
        </layout>
    </appender>
    <root>
        <appender-ref ref="CA" />
        <appender-ref ref="Daily" />
    </root>
</log4j:configuration>

将此xml文件放在类路径中...也将log4j保留在类路径中

示例代码为:

package com.vanilla.helloworld;

import org.apache.log4j。*;

public class HelloWorld 
{
    static final Logger logger = Logger.getLogger(HelloWorld.class);

    public static void main(String[] args) throws InterruptedException
    {

        logger.info("I am going to log to file as well as console");

    }

}
相关问题