`

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

分享到:
评论

相关推荐

    Java基础知识方面的面试题pdfJava实用源码整理learns

    7. **日志记录**:Log4j或SLF4J的日志处理。 8. **实用工具类**:日期时间处理、字符串操作、文件操作等。 最后,"下载及使用说明.txt"可能是对资源的下载和使用进行指导,而"更多Java资料学习.url"则可能指向一个...

    【ssm项目源码】资料管理平台.zip

    项目可能集成了Log4j、Logback或SLF4J等日志框架,记录系统运行时的事件。 10. **单元测试与持续集成**:为了保证代码质量,项目应该包含完善的单元测试,可能使用JUnit、Mockito等工具。同时,持续集成工具如...

    hibernate学习必用

    通过slf4j,你可以选择任何你喜欢的日志实现(如log4j、logback等),而无需修改代码。在实际项目中,合理地利用日志系统,能够有效地排查问题,提高开发效率。 在学习这个资源包时,你需要逐步掌握以下内容: 1. ...

    JAVA工程师简历.pdf

    在工具和技术应用上,他熟练运用JUnit进行调试,使用log4j进行日志管理,掌握SVN进行项目整合,熟悉MyBatis进行数据库管理。他还了解Tomcat、Apache服务器配置,并能熟练使用MyEclipse和Eclipse等开发工具。在实际...

    java程序员个人简历04.docx

    * 熟练运用 JUnit,Debug 进行程序调试、log4j 进行日志管理、SVN 项目整合、MyBatis 数据库管理 * 熟悉 Tomcat、Apache 等服务器配置 项目经验 * 伟业网上电商系统 + 软件环境:Oracle10g、Tomcat7.0、Struts 2.0...

    2020年JAVA工程师简历模板.docx

    - **软件工具**:熟练使用JUnit进行程序调试、log4j进行日志管理、SVN进行项目整合、MyBatis进行数据库管理。 - **服务器配置**:熟悉Tomcat、Apache等服务器配置。 - **开发工具**:熟练掌握MyEclipse/Eclipse等...

    JAVA程序员简历模板

    * 熟练运用 JUnit,Debug 进行程序调试、log4j 进行日志管理、SVN 项目整合、MyBatis 数据库管理 * 熟悉 Tomcat、Apache 等服务器配置 * 熟练掌握 MyEclipse/Eclipse 等开发工具 六、项目经验 * 2013/06 -- 至今 ...

    matlab大全.pdf

    - 指数和对数:`exp`, `log`, `log10`, `sqrt`,以及复数函数 `abs`, `angle`, `conj`, `imag`, `real`。 - 数值处理:`fix`, `floor`, `ceil`, `round`, `rem`, `sign` 等用于处理数值。 - 随机数生成:`zeros`,...

    awesome-spring-boot:Spring启动资源

    10. **监控与日志**:使用Actuator进行应用性能监控,以及Logback、Log4j2的日志管理。 11. **云原生支持**:Docker容器化、Kubernetes编排、Cloud Foundry平台集成。 12. **前端技术**:Vue.js、React、Angular等...

Global site tag (gtag.js) - Google Analytics