`

log4j使用整理材料(4)

阅读更多

1.1.1           Apache Commons-logging使用流程

1)将common-logging.jar 包加入到环境变量或者classpath

2)导入所有需的commongs-logging

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

3)在需要使用logging的类中获取Log实例。

private static Log log = LogFactory.getLog(Test.class);

注意:这里定义的是static成员,以避免产生多个实例。 LogFactory.getLog()方法的参数使用的是当前类的class,这是目前被普通认为的最好的方式。为什么不写成LogFactory.getLog(this.getClass())因为static类成员访问不到this指针!

4)使用Logger对象的debug,info,fatal...方法。

log.debug("Debug info.");                    

注意:

每个需要写日志的java类都得创建一个static logger实例,如果java类很多的话,那创建这些static对象的开销将非常大,所以最后自己写一个log,有一个静态方法可以得到logger实例:

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class Logs {

         /**
       * Define a static Log variable,
       */  

private static Log log;

static{

log=LogFactory.getLog(Logs.class);

}

/**

* Get the log object
    * @return Log
    */

public static Log getLogger(){

    return log;

}

}

上面代码使用commons-logging生成一个静态log实例,以后的程序就可以这样来做:

Logs.getLogger().info("begin Action: UserBaseInfoAction.getSingleUserInfo()");
DBSession.begin();
String fname=userForm.getFname();
userForm=UserBaseInfoBusiness.getSingleUserInfo(DBSession.getSession(),fname);
DBSession.commit();
request.setAttribute("userInfo",userForm);
Logs.getLogger().info("end Action: UserBaseInfoAction.getSingleUserInfo()");

Log4j的实现方法类似,初始化类可以这样写:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Logs {
   private static Logger log logger;
    /**
     * Define a static Log variable,
     */  
          static{
                   try{
                     logger=Logger.getLogger(LogInit.class);     
                    //DOMConfigurator.configure("E:/study/log4j/log4j.xml");//
加载.xml文件
                    //PropertyConfigurator.configure("log4j.properties");//
加载.properties文件                    }catch(Exception ex){
                            System.out.println("can't init the Logger, caused by: "+ex);
                     }
              }  
       /**
        * Get the log object
        * @return Log
        */
       public static Logger getLogger(){
              return logger;
       }
}
应用程序中的调用是完全相同的。

1.1.2           Apache Commons-logging使用示例

Test.java

package sample;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class Test {

    private static Log log = LogFactory.getLog(Test.class);

    public void log(){

       log.debug("Debug info.");

       log.info("Info info");

       log.warn("Warn info");

       log.error("Error info");

       log.fatal("Fatal info");

    }

    public static void main(String[] args) {

       Test test = new Test();

       test.log();

    }

}

结果:

DEBUG  sample.Test.log(Test.java:13) Debug info.

INFO   sample.Test.log(Test.java:14) Info info

WARN   sample.Test.log(Test.java:15) Warn info

ERROR  sample.Test.log(Test.java:16) Error info

FATAL  sample.Test.log(Test.java:17) Fatal info

当没有任何配置文件(.properties)时,就如同上的结果。此时,它使用的是使用简易日志包装类(SimpleLog)

下面加入包与配置文件,使其使用log4j

<!--[if !supportLists]-->1 

<!--[endif]-->

加入配置文件commons-logging.propertieslog4j.properties

<!--[if !supportLists]-->2 

<!--[endif]-->

log4j.jar common-logging.jar 两个包加入到环境变量或者classpath

3Test.java内容不变。

<!--[if !supportLists]-->3  <!--[endif]-->commons-logging.properties

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog

4log4j.properties

log4j.rootLogger=info, stdout

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] - %m%n

结果:

INFO [main] - Info info

WARN [main] - Warn info

ERROR [main] - Error info

FATAL [main] - Fatal info

分享到:
评论

相关推荐

    老生常谈Log4j和Log4j2的区别(推荐)

    然后使用Logger.getLogger()方法获取日志记录器,而Log4j2需要import org.apache.logging.log4j.Level、org.apache.logging.log4j.LogManager和org.apache.logging.log4j.Logger,使用LogManager.getLogger()方法...

    log4j使用教程(详解)

    Log4j是一款广泛使用的开源日志框架,由Apache软件基金会开发。本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...

    Log4j2简介及与Log4j效率对比

    9. **Layouts的广泛适用性**:Log4j2的Layouts不仅可以应用于使用`OutputStream`写入日志的Appender,还可以应用于所有类型的Appender。 10. **优化的并发支持**:Log4j2利用Java 5提供的并发特性,能够在较低级别...

    log4j.jar各个版本

    apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...

    log4j简单使用

    - `log4j-1.2.14.jar`: 这是Log4j 1.2.14版本的jar包,包含了Log4j的全部类和方法,是使用Log4j进行日志记录的核心组件。 - `commons-logging-1.0.4.jar`: 这是Apache Commons Logging库,它是Java日志API的一个抽象...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    Log4j和SLF4J(Simple Logging Facade for Java)是两个广泛使用的日志框架,它们各有优势并常被一起使用以提供更灵活的日志解决方案。本文将详细探讨如何通过SLF4J接口来使用Log4j进行日志记录,并展示一个测试代码...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    Log4j2学习用到的jar包及apache-log4j-2.19.0-bin.zip

    分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...

    log4j使用详解log4j使用详解

    ### Log4j 使用详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持...

    SSM整合中的Log4j日志的配置详情

    四、在 Maven 项目中引入 Log4j 依赖 在 Maven 项目中,需要引入 Log4j 依赖项,以便使用 Log4j。下面是一个基本的 Maven 依赖项配置: ``` &lt;groupId&gt;log4j &lt;artifactId&gt;log4j &lt;version&gt;1.2.16 ``` 这个配置...

    Log4j使用实例

    ### Log4j 使用实例详解 #### 一、Log4j简介 Log4j 是一个开源的日志记录框架,由 Apache 软件基金会提供。它允许开发者根据需求配置日志等级,并灵活选择日志信息的输出方式。Log4j 的核心组件包括 Logger、...

    log4j-2.18.0

    Log4Shell漏洞的核心在于log4j2的Lookup功能,该功能允许在日志消息中动态解析变量。攻击者可以利用此功能,将恶意的JNDI链接注入到日志记录中,当log4j2尝试解析这些链接时,就会执行攻击者控制的代码。由于很多...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    提到的"避免log4j漏洞问题"可能指的是在2021年出现的严重安全漏洞——CVE-2021-44228,也被称为Log4Shell。这个漏洞允许攻击者通过注入恶意的JNDI(Java Naming and Directory Interface)链接来执行远程代码。...

    修复log4j漏洞log4j2下载最新log4j2.16.0下载 log4j-api-2.16.0.jar

    apache下载太慢,特搬到国内下载。修复log4j漏洞log4j2下载最新log4j2.16.0下载

    log4j使用详解 j2EE

    ### log4j使用详解 #### 一、log4j简介 Log4j是Apache的一个开源项目,用于实现日志功能,被广泛应用于各种基于Java的应用系统中。它提供了一个非常强大的框架来定制日志信息的生成方式,允许开发人员根据需要调整...

    log4j各个版本

    Log4j是Apache组织开发的一款广泛使用的Java日志框架,它为Java应用程序提供了一种灵活且强大的日志记录机制。Log4j的各个版本在功能、性能和安全性方面都有所不同,下面将详细介绍这些版本及其特点。 1. Log4j ...

Global site tag (gtag.js) - Google Analytics