<2021SC@SDUSC>山东大学软件工程应用与实践JPress代码分析(十四)

2021SC@SDUSC

在运行项目时,我们注意到控制台有很多关于日志的输出,所以代码分析的最后一篇文章我们来分析一下关于日志log4j的配置、运用、显示。

一、Log4j介绍

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

二、如何配置log4j

如果使用maven项目,可以选择在pom.xml中新增依赖:

<!-- 加入log4j支持 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

在本jpress项目中,我们可以看到配置文件pom.xml中㡰log4j的配置如下:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>${log4j.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j.version}</version>
</dependency>

<dependency>
                <groupId>com.egzosn</groupId>
                <artifactId>pay-java-paypal</artifactId>
                <version>${pay-java.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
 </dependency>
  • 课件有直接添加的log4j依赖,使用org.apache.logging.log4j;也有在对应的依赖中作为exclusion存在的log4j。
  • 标签的作用是排除关联依赖的引入,因为maven的pom依赖其中有一点是将关联的依赖全都引入进来 ,如果关联的依赖和引入的其他依赖可能存在冲突,就必须将关联的依赖排除掉,所以就用这个标签。

三、添加log4j2.xml

在配置过依赖之后,需要添加log4j2.xml文件,在此详解log4j2.xml配置文件的节点。

3.1 configuration

<configuration status="INFO" monitorInterval="30">

  • status:用来指定log4j本身的打印日志级别。
  • monitorInterval:指定log4j自动重新配置的监测间隔时间。
  • status6个优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
  • 如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出
    设置为OFF表示不记录log4j2本身的日志。
  • 本个配置文件中设置优先级为INFO。

3.2 Appenders

  • 常见的有三种子节点:Console、RollingFile、File。
  • Console节点用来定义输出到控制台的Appender。
  • File节点用来定义输出到指定位置的文件的Appender。
  • RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender。

在本个配置文件的中的配置如下:

  1. 输出到Console控制台,指定输出格式和过滤器等级为INFO

  2. 输出到滚动保存的文件, 触发保存日志文件的条件是日志文件大于3KB,只保存最新的10个日志

  3. 输出到滚动保存的文件, 触发保存日志文件的条件是日志文件大于3KB,只保存最新的10个日志

  4. 输出到滚动保存的文件, 触发保存日志文件的条件是每分钟第一次的日志事件。ERROR日志是按分钟产生日志

3.3 loggers

  • Loggers节点,常见的有两种:Root和Logger。
  • Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。
  • Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

四、使用

在要输出日志的类中加入相关语句:
定义属性:static Logger logger = Logger.getLogger(LogDemo.class); //LogDemo为相关的类
在相应的方法中:
if (logger.isDebugEnabled()){
logger.debug(“System ……”);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值