Java日志系统-- Log4j

实战 Java 并发编程
实战为导向,从Java 并发原理出发,并集合开发实践,全面剖析 Java 并发编程。
wangxiaoming

 Java日志系统-- Log4j

 

1、Log4J 

最早的java日志框架 是由Apache 基金会发起的, 提供灵活强大的日志记录机制

JDK1.4 loggingFramework/

2、Log4J 的应用:

         主要的三个组件:

                         1.Logger (记录器)

                         2.Appenders 输出源

                         3.Layouts 布局

            说明:

1. 记录器 表示的是日志输出级别

2. 输出源 表示的是日志要输出的地方

3. 布局  表示日志以何种形式输出

     

               

3、Log4J 三个核心概念

公共类: Logger  负责处理日志记录的大部分操作

公共接口: Appenders  负责控制日志记录的输出

公共抽象类  Layout    负责格式化Appender 的输出

4、三大组件的详细介绍

 

 1). Logger 日志记录器

   五个级别:

     DEGUG  INFO  WARN  ERROR  FATAL 

   五个级别的顺序:

     DEBUG < INFO < WARN <ERROR< FATAL

 注: Log4J 有一个规则:

  显示比定义级别高的日志

Eg.

  如果定义为info 级别, 如果日志级别是error warn 的 那么是可以显示的 但是

  Debug 是不能显示的

2).Appenders 控制日志级别的输出位置

   Log4J 日志系统, 允许吧日志输到不同的地方,如控制台(console) 文件(Files)  根据天数或者大小产生新的文件,以流的形式发送到其他地方等

 

语法表示:
Org.apache.log4j.consoleAppender(控制台)
Org.apache.log4j.FileAppender(文件)
Org.apache.log4j.DailyRollingFileApender (每天产生一个日志文件)
 <rollingPolicy 
   			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${sys.backup}/sign7662/sign7662.%d{yyyy-MM-dd}.log</FileNamePattern> 
  </rollingPolicy>
Org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
<triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>300MB</MaxFileSize>
   </triggeringPolicy>
Org.apache.log4jwriterAppender (将日志以流格式发送到指定的地方

 

 

SMTAppender   发送邮件

SocketAppender  远程日志服务器

loggingEvent 对象

 

配置时方式为:

Log4j.appender.appenderName = fully.qualified.name 

Log4j.appender.appenderName.option1 =  value1;

....

Log4j.appender.appenderName.optionN = valueN;

Layout: 格式化输出日志信息

 

Appender 必须使用一个与之相关联的layOut ,这样才能知道怎样格式年华输出日志信息

 

Log4j具有三种类型的Layout:

1. HTMLLayout 

格式化日志输出为HTML表格

PatternLayout

根据指定的转换模式格式化日志输出

SimpleLayout

以一种非常简单的方式格式化日志输出

<layout class="ch.qos.logback.classic.PatternLayout">

            <Pattern>%d{yyyy-MM-dd HH:mm:ss} |+| %msg%n</Pattern> </layout>

 

使用配置文件配置Log4j

Log4j.xml 配置文件

Log4j.properties 配置文件

 

 

Log4j.properties 文件 再第一次调用到Log4J 时, 这个配置文件可以告诉LOg4j 以什么样的格式,什么样的信息,输出到什么地方。

 

Layouts 

 

有时用户希望根据自己的喜好,格式化自己的日志输出,Log4j可以在Appenders的后面附加Layouts 来完成这个功能:

 

  <appender name="sign7662" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <OnMismatch>ACCEPT</OnMismatch>
            <OnMatch>DENY</OnMatch>
        </filter>
        <Encoding>GBK</Encoding>
        <File>${sys.base}/sign/sign7662.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${sys.backup}/sign7662/sign7662.%d{yyyy-MM-dd}.log</FileNamePattern> 
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d [%thread] %-5level %logger{80} - %msg%n</Pattern>
        </layout>
     </appender>

 

 

 

 

 

Log4j 基本编程方法  

 

1.建立Logger实例

 

语法显示:

Public static Logger getLogger(String name)

 

实际上使用

 

Static  Logger logger  = Logger.getLogger();

 

2.读取配置文件

获得Logger的实例后,结下了配置Log4j 使用环境:

 

语法表示:

 

BasicConfigurator.configure();

 

自动快速地使用缺省Log4j环境。

 

PropertyConfigurator.configure(StringConfigFile);

读取java 特性编写的配置文件

 

DomConfigurator.configure(StringFileName): 读取Xml形式的配置文件

 

 

3.完成上面步骤之后, 下面按照日志级别的不同插入日志

Logger.debug(ObjectMessage);

 

Logger.info(ObjectMessage);

 

Logger.warn(ObjectMessage);

 

Logger.error(ObjectMessage);

 

Logger.fatal(ObjectMessage);

 

4.Log4j配置文件 

在实际编程时, 要使Log4j真正在系统中运行事先要对配置文件进行定义, 步骤就是对Logger.Appender与Layout的分别使用。

Log4j采用类似C语言中的Printf 函数的打印格式化日志信息。

 

 

 

 

 

          // log4j
            String log4jConfigFile = configPath + File.separatorChar + LOG_CONFIG_FILE;
            logger = Loggerx.getLogger("console");
            logger.info(log4jConfigFile);
            Configurator.initialize(null, log4jConfigFile);

 先初始化  log4j 再 logger 打印日志

 

 

 

 

 

 

 

 

 

     

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值