40

嗨,我是编程概念的新手,我倾向于用 log4j 解决一些问题。所以我正在阅读 Log4j 教程,我在其中找到了以下代码:

package test;
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;


public class Log4jExample {

    /* Get actual class name to be printed on */
        static Logger log = Logger.getLogger(Log4jExample.class.getName());
        public static void main(String[] args)throws IOException,SQLException
        {
            log.debug("Hello this is an debug message");
            log.info("Hello this is an info message");
        }

}

但是在 Eclipse 中运行它之后,我无法找到生成的日志文件。谁能告诉文件被转储在哪里?还可以帮助我找到一些最好的网站,从中我可以从头开始学习 Log4j 和 Java Doc。谢谢!!

4

4 回答 4

37

要将日志输出重定向到文件,您需要使用 FileAppender 并且需要在 log4j.properties/xml 文件中定义其他文件详细信息。这是相同的示例属性文件:

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

按照本教程了解有关 log4j 用法的更多信息:

http://www.mkyong.com/logging/log4j-log4j-properties-examples/

于 2013-06-27T06:39:37.913 回答
8

你已经从这里复制了这个示例代码,对吧?
现在,你可以看到property他们定义的文件,你做过同样的事情吗?如果没有,则在您的项目中添加以下代码以及 log4j 的属性文件

所以 log4j.properties 文件的内容如下:

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

根据您的要求进行更改,例如log路径

于 2013-06-27T06:40:45.330 回答
8

默认情况下,Log4j将日志记录到标准输出,这意味着您应该能够在 Eclipse 的控制台视图中看到日志消息。要登录到文件,您需要通过在classpath的文件中FileAppender定义它来显式使用它。log4j.properties

在您的类路径中创建以下log4j.properties文件。这允许您将消息记录到文件和控制台。

log4j.rootLogger=debug, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=example.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n

注意:上面会在你当前的工作目录(即 Eclipse 的项目目录)中创建一个example.log ,这样相同的log4j.properties就可以在不同的项目上工作,而不会覆盖彼此的日志。

参考
Apache log4j 1.2 - log4j 简介

于 2013-06-27T06:36:32.143 回答
0

如果您不使用任何 log4j 属性来生成日志文件,您可以在 IDE 的控制台视图中查看日志信息。您可以在项目中定义 log4j.properties,以便使用这些属性生成日志文件。下面列出了一个快速示例。

# Global logging configuration
log4j.rootLogger=DEBUG, stdout, R

# SQL Map logging configuration...
log4j.logger.com.ibatis=INFO
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=INFO
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=INFO
log4j.logger.com.ibatis.SQLMap.engine.impl.SQL MapClientDelegate=INFO

log4j.logger.java.sql.Connection=INFO
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache.http=ERROR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=MyLog.log
log4j.appender.R.MaxFileSize=50000KB
log4j.appender.R.Encoding=UTF-8

# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F\:%L) - %m%n
于 2013-06-27T06:42:05.203 回答