Log4j类详解(org.apache.log4j.Logger)

Log4j的配置

        1、新建Java Project>>新建package>>新建java类;

        2、下载log4j的jar包,导入到java项目;

        3、新建log4j.properties,置于project根目录下;

        4、在main()中,加载log4j:PropertyConfigurator.configure("bin/log4j.properties");

        5、写个小程序测试下。


log4j.properties:

#可以设置级别:debug>info>error 
#debug:显示debug、info、error 
#info:显示info、error 
#error:只error 
log4j.rootLogger=debug,appender1 
#log4j.rootLogger=info,appender1 
#log4j.rootLogger=error,appender1 
 
#输出到控制台 
log4j.appender.appender1=org.apache.log4j.ConsoleAppender 
#样式为TTCCLayout 
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

Main.java:

package com.zxt.logger;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
 
public classLog4jTest {
   
    public static void main(String[] args) {
        PropertyConfigurator.configure("bin/log4j.properties");
       
        Loggerlog = Logger.getLogger(Log4jTest.class);
       
        log.warn("yes yes yes~~~");
    }
}


定义配置文件

         通过配置文件可知,我们需要配置的主要包括这3个方面的内容:

        1、日志信息的优先级别;

        2、日志输出的目的地(控制台、文件等等);

        3、日志输出的样式。

        Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。


1、配置根Logger,其语法为:

  log4j.rootLogger = [ level ] , appenderName,appenderName, …

  其中,level是日志记录的优先级,分为OFFFATALERRORWARNINFODEBUGALL或者你自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。


2、配置日志信息输出目的地Appender,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN

其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台);
org.apache.log4j.FileAppender(文件);
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件);
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件);
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方);
org.apache.log4j.JDBCAppender(将日志信息保存到数据库中)。


3、配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN

其中,Log4j提供的layout有以e几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局);
org.apache.log4j.PatternLayout(可以灵活地指定布局模式);
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串);
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息

%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r:输出自应用启动到输出该log信息耗费的毫秒数
%c:输出所属的类目,通常就是所在类的全名
%f: 输出日志信息所属的类的类名
%t:输出产生该日志事件的线程名
%n:输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。

在代码中使用Log4j

1、得到记录器

  使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

  public static Logger getLogger(String name)

       通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

  static Logger logger =Logger.getLogger ( ServerWithLog4j.class.getName () )


2、读取配置文件

   当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

   1BasicConfigurator.configure():自动快速地使用缺省Log4j环境。

        2PropertyConfigurator.configure ( String configFilename):读取使用Java的特性文件编写的配置文件。

示例:

Propertiesprop = new Properties();
prop.setProperty("log4j.rootLogger","DEBUG, CONSOLE");
prop.setProperty("log4j.appender.CONSOLE","org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.CONSOLE.layout","org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern","%d{HH:mm:ss,SSS} [%t] %-5p %C{1} : %m%n");
PropertyConfigurator.configure(prop);

         3DOMConfigurator.configure ( String filename ):读取XML形式的配置文件。

示例:

<?xmlversion="1.0" encoding="UTF-8"?> 
<!DOCTYPElog4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">
    <appendername="appender1" 
       class="org.apache.log4j.RollingFileAppender"> 
        <param name="File"value="logfile08.html" /> 
        <param name="MaxFileSize"value="1MB" /> 
        <paramname="MaxBackupIndex" value="5" /> 
        <layoutclass="org.apache.log4j.HTMLLayout"> 
        </layout>
    </appender>
    <root>
       <level value="debug" />
        <appender-refref="appender1" />
    </root>
</log4j:configuration>

        PropertyConfigurator.configure("bin/log4j.properties"):读取properties形式的配置文件。

示例:

#省略根,只设置特定包的级别和目的地 
log4j.logger.com.coderdream.log4j=debug,appender1 
log4j.logger.com.coderdream.log4jDao=info,appender1,appender2 
 
#输出到控制台 
log4j.appender.appender1=org.apache.log4j.ConsoleAppender 
#设置输出样式 
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout 
#自定义样式 
#%r 时间 0 
#%t 方法名 main 
#%p 优先级DEBUG/INFO/ERROR 
#%c 所属类的全名(包括包名) 
#%l 发生的位置,在某个类的某行 
#%m 输出代码中指定的讯息,如log(message)中的message 
#%n 输出一个换行符号 
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/ddHH:mm:ss:SSS}][%C-%M] %m%n 
 
#输出到文件(这里默认为追加方式) 
log4j.appender.appender2=org.apache.log4j.FileAppender 
#设置文件输出路径 
#【1】文本文件 
log4j.appender.appender2.File=c:/Log4JDemo07_Dao.log 
#设置文件输出样式 
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout 
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M]-%m%n 


log4j.properties

# 此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名
# 如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示
log4j.rootLogger = info, stdout, R


# 此句为定义名为stdout的输出端是哪种类型
# org.apache.log4j.ConsoleAppender(控制台),
# org.apache.log4j.FileAppender(文件),
# org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
# org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
# org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.stdout = org.apache.log4j.ConsoleAppender

# 此句为定义名为stdout的输出端的layout是哪种类型
# org.apache.log4j.HTMLLayout(以HTML表格形式布局),
# org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
# org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
# org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
# 如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern
# [QC]是log信息的开头,可以为任意字符,一般为项目简称。
# %m 输出代码中指定的消息
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %r 输出自应用启动到输出该log信息耗费的毫秒数
# %c 输出所属的类目,通常就是所在类的全名
# %t 输出产生该日志事件的线程名
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
log4j.appender.stdout.layout.ConversionPattern = [ZXTBlog] %d %-5p [%t] %c | %m%n
log4j.logger.org.sql2o = debug


# write to file
# 定义名为R的输出端的类型为每天产生一个日志文件。
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
# Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容 
log4j.appender.R.Append=true
# 此句为定义名为R的输出端的文件名
log4j.appender.R.File=logs/zxtblog.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[Blog] %d %-5p [%t] %c | %m%n


3、插入记录信息(格式化日志信息)

  当上两个必要步骤执行完毕,你就可以轻松地使用不同优先级别的日志记录语句插入到你想记录日志的任何地方,其语法如下:

Logger.debug ( Objectmessage ) ;
Logger.info ( Object message) ;
Logger.warn ( Object message) ;
Logger.error ( Objectmessage ) ;

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql 是一个流行的关系型数据库管理系统,而 log4j 则是一个 Java 应用程序中常用的日志记录工具。log4jlogger_org.apache.log4j.Logger 是一个 log4j 框架中的 Logger ,用于在应用程序中记录日志。 Logger 实例被用于记录应用程序中的各种事件。它们可以配置为将这些事件记录到不同的目的地,如控制台、文件或数据库中。Logger 可以分级别记录日志,包括 DEBUG、INFO、WARN、ERROR 和 FATAL 五个级别,可以根据需要进行配置。 在使用 log4jlogger_org.apache.log4j.Logger 记录日志时,需要首先创建一个 Logger 实例。这可以通过调用 LogManager 的 getLogger() 方法来实现,例如: ``` import org.apache.log4j.Logger; public class MyClass { private static final Logger logger = LogManager.getLogger(MyClass.class); public void doSomething() { logger.info("Doing something..."); } } ``` 在这个例子中,我们使用 getLogger() 方法创建了一个名为 "MyClass" 的 Logger 实例。然后,在 doSomething() 方法中,我们使用 logger 实例记录了一条 INFO 级别的日志消息。 需要注意的是,Logger 实例是按照包名来命名的。因此,在上面的例子中,Logger 实例的完整名称是 "com.example.MyClass"。此外,Logger 实例通常被声明为 private static final 型,以便在整个中都可用。 总之,log4jlogger_org.apache.log4j.Loggerlog4j 框架中的一个重要组件,用于在应用程序中记录日志。通过使用 Logger 实例,可以轻松地记录各种事件,并将它们记录到不同的目的地。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值