如何正确地将log4j Logger对象实例化到我的类中?

时间:2015-02-24 15:21:02

标签: java logging log4j

我正在开发一个简单的Java命令行,我需要将 log4j 插入到我的应用程序中,所以我正在学习本教程:

http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/

所以我做了以下步骤:

  1. 我将log4j jar文件放入项目的库中。

  2. 我将log4j.properties放入配置包中,并使用这个最小配置对其进行配置:

    #define the console appender
    log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
    
    # now define the layout for the appender
    log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
    log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    # now map our console appender as a root logger, means all log messages will go to this appender
    log4j.rootLogger = DEBUG, consoleAppender
    

    所以这个配置说输出必须打印到控制台,我关联 DEBUG 模式。

  3. 现在教程说:

      

    在任何Java文件中,添加以下行以便启动   日志记录。

    并显示此示例代码:

    private static Logger logger = Logger.getLogger(MyclassName.class);
    logger.debug("this is a sample log message.");
    

    好的,我不明白为了将Logger实例化到我的课程中,我必须做些什么。

    我的班级名为Mailer,所以我可以这样做:

    private static Logger logger = Logger.getLogger(Mailer.class);
    

    或者是什么?我究竟要做什么?

  4. 编辑1:我的课程类似于:

    public class Mailer {
    
        private static final org.apache.log4j.Logger logger = new Logger(Mailer.class);
        ...................................
        ...................................
        ...................................
    }
    

    问题是IntelliJ在 Logger(Mailer.class); 上向我显示错误并对我说: Logger(java.Lang.String)在&#中具有受保护的访问权限39; org.apache.log4j.Logger'

    为什么呢?我该如何解决这个问题?

    TNX

2 个答案:

答案 0 :(得分:2)

然后在您的代码中编写例如:

logger.debug("Your message);
....
logger.error("Somehting crahsed",e);...

答案 1 :(得分:0)

您必须使用LogManager

结帐此链接 -

https://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/LogManager.html#getLogger()

因此,对于您的代码,更改将是这样的 -

     private static final org.apache.log4j.Logger logger = LogManager.getLogger(Mailer.class);
     logger.debug("Its debugging");
相关问题