【问题标题】:What is log4j's default log file dumping pathlog4j 的默认日志文件转储路径是什么
【发布时间】:2013-06-24 12:45:26
【问题描述】:

您好,我是编程概念的新手,我倾向于使用 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。谢谢!!

【问题讨论】:

  • 你试过标准输出了吗?
  • 这个 SO 答案可能对您有所帮助:stackoverflow.com/questions/2619160/…
  • 如果你想在一个文件中有一个日志,你必须定义你的日志文件应该在哪里创建。
  • ya 在标准输出中显示以下警告:log4j:WARN No appenders could be found for logger (test.Log4jExample)。 log4j:WARN 请正确初始化 log4j 系统。 log4j:WARN 请参阅logging.apache.org/log4j/1.2/faq.html#noconfig 了解更多信息。
  • @shruti 那是因为类路径中没有 log4j.properties。这不是错误,因为 Log4j 会恢复为记录到控制台的默认值。更多信息在官方site.

标签: java eclipse log4j


【解决方案1】:

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

在您的类路径中创建以下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 - Short introduction to log4j

【讨论】:

  • 所以你能告诉我我的日志信息在哪里,因为它没有显示在控制台上,我应该把我的 .properties 文件放在哪里
  • "/src" 中的任何内容都在您的 classpath 中。
  • 请注意,这会在您当前的目录(Eclipse 的项目目录)中创建一个 example.log,因此相同的 log4j.properties 将适用于不同的项目,而不会过度写入日志。
  • @Ravi,对于使用 Ctrl+F 搜索此页面的人,请使用“目录”或“CWD”一词;)
  • 这是唯一真正回答了 log4j 默认记录在哪里的问题。
【解决方案2】:

要将日志输出重定向到文件,您需要使用 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/

【讨论】:

    【解决方案3】:

    你已经从Here复制了这个示例代码,对吧?
    现在,正如你所看到的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 路径

    【讨论】:

    • 如何从Wildfly等应用服务器指定运行时的log var?
    【解决方案4】:

    如果您不使用任何 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 2019-09-13
      • 1970-01-01
      • 2017-03-18
      • 2019-09-14
      • 2014-12-01
      • 1970-01-01
      • 2023-01-21
      相关资源
      最近更新 更多