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

如何在控制台上和文件上进行Java日志记录?,java,logging,Java,Logging,这是我目前的想法。 我听说过log4j,但对我来说太复杂了 所以我只想要一些简单的东西,可以在控制台上打印日志,也可以根据用户配置将其写入文件 使用一个日志框架,比如JDK中的日志框架,并将其配置为登录到两个位置。他们为你解决这些问题 由于像log4j这样的框架的流行,大多数人将其标准化,并使用相同的日志框架,所以所有的东西都放在同一个地方。(即,他们使用已经在使用log4j的第三方库) 下面是一些您可能想要了解这些框架如何工作的内容(大多数类似): 在本文档中向下滚动一点,查看一些实际示例使

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


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

使用一个日志框架,比如JDK中的日志框架,并将其配置为登录到两个位置。他们为你解决这些问题

由于像log4j这样的框架的流行,大多数人将其标准化,并使用相同的日志框架,所以所有的东西都放在同一个地方。(即,他们使用已经在使用log4j的第三方库)

下面是一些您可能想要了解这些框架如何工作的内容(大多数类似):

在本文档中向下滚动一点,查看一些实际示例

使用log4j

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

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很复杂,那么即使建议您基于java日志编写自己的日志处理程序也会非常麻烦,因此,继续使用if-else语句编写自己的日志功能,特别是当您想写入文件时,将比学习使用Log4j更加困难。任何其他解决方案都将比使用已经完成工作的库更加复杂。
<!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>
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");

    }

}