zoukankan      html  css  js  c++  java
  • Log4j日志管理的简单实例

           大型项目中非常多情况下要分析程序的日志信息,怎样管理自己的日志信息至关重要。

    在应用程序中加入日志记录总的来说基于三个目的 ,

    • 监视代码中变量的变化情况,周期性的记录到文件里供其它应用进行统计分析工作;
    • 跟踪代码执行时轨迹,作为日后审计的根据。
    • 担当集成开发环境中的调试器的作用。向文件或控制台打印代码的调试信息。  

           最普通的做法就是在代码中嵌入很多的打印语句,这些打印语句能够输出到控制台或文件里,比較好的做法就是构造一个日志操作类 来封装此类操作。而不是让一系列的打印语句充斥了代码的主体。


           这篇文章主要针对基于Java语言实现的项目中的日志管理进行简单的阐述。

    一、工具及文件

    二、Log4j 简单介绍

           在强调可重用组件开发的今天。除了自己从头到尾开发一个可重用的日志操作类外, Apache 为我们提供了一个强有力的日志操作包 -Log4j 。


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

      
           此外,通过 Log4j 其它语言接口,您能够在 C 、C++、.Net 、PL/SQL 程序中使用 Log4j ,其语法和使用方法与在 Java 程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。

    并且。通 过使用各种第三方扩展,您能够非常方便地将 Log4j 集成到 J2EE 、 JINI 甚至是 SNMP 应用中。


           Log4j主要配置三方面的内容,

    • Logger - 日志写出器 。供程序猿输出日志信息
    • Appender - 日志目的地 。把格式化好的日志信息输出到指定的地方去
    • Layout - 日志格式化器 ,用来把程序猿的 logging request 格式化成字符串

    三、简单实例

    • log4j.properties文件配置编写
    #配置日志写出器
    #log4j.rootLogger = [ level ] , appenderName, appenderName, …
    #当中。 level 是日志记录的优先级,分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
    #Log4j 建议仅仅使用四个级别,优先级从高到低各自是ERROR、WARN、INFO、DEBUG 。
    #通过在这里定义的级别,您能够控制到应用程序中对应级别的日志信息的开关。比方在这里定义了info级别。则应用程序中全部DEBUG级别的日志信息将不被打印出来。
    #appenderName 就是指日志信息输出到哪个地方。能够同一时候指定多个输出目的地。
    log4j.rootLogger=info,R,stdout 
    
    #配置日志目的地,输出到控制台
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    
    #追加的方式输出
    log4j.appender.stdout.follow=true
    
    #配置日志格式化器
    #能够灵活地指定布局模式
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    
    #指定布局模式的格式
    log4j.appender.stdout.layout.ConversionPattern=%d[%t](%F%L)-%m%n
    
    #文件大小到达指定尺寸的时候产生一个新的文件
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    
    #输出日志文件的位置路径TestServer.log
    log4j.appender.R.File=TestServer.log
    
    #单个文件最大尺寸,在日志文件到达该大小时,将会自己主动滚动。即将原来的内容移到 TestServer.log.1 文件。
    log4j.appender.R.MaxFileSize=20MB
    
    #指定能够产生的滚动文件的最大数
    log4j.appender.R.MaxBackupIndex=20
    
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d%5p[%t](%F%L)-%m%n
    • 简单的Java程序实例代码
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    public class logTest {
    
        static public Logger m_logger;
    
        static private void InitLog() {
            try {
                m_logger = Logger.getLogger(logTest.class.getName());
                PropertyConfigurator.configure("log4j.properties");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
    
            logTest.InitLog();
    
            m_logger.info("main is start [...]");
    
            try {
                m_logger.info("自己定义的异常类对象");
                throw new MyException("自己定义的异常");// 抛一个自己定义的异常类对象,传入的參数就是给控制台看的异常
            } catch (MyException e) {
                m_logger.error(e.getExceptionName().toString(), e);
                m_logger.debug(e);
            }
            m_logger.info("main is over [ OK ]");
    
        }
    
    }
    
    class MyException extends Exception // 自己定义的异常类 继承Exception类
    {
        private static final long serialVersionUID = 1L;
        private String exceptionName; // 定义一个私有变量,用来为自己定义异常
    
        public MyException() {
        } // 创建一个无參数的构造函数
    
        public MyException(String exceptionName) { // 创建一个有參数的构造函数,传入的參数为前面定义的异常名称
            this.exceptionName = exceptionName;
        }
    
        public String getExceptionName() { // 定义一个方法,提供给外部来获取私有变量
            return this.exceptionName;
        }
    }
    
    • 測试结果

      – 控制台输出例如以下。
      这里写图片描写叙述
      – project文件夹路径输出例如以下。
      这里写图片描写叙述
      这里写图片描写叙述

    四、參考引用

  • 相关阅读:
    Myeclipse新建 配置Hibernate
    MyEclipse从数据库表反向生成实体类之Hibernate方式(反向工程)
    简单使用JSON,JavaScript读取JSON文本(三)
    简单使用JSON,通过JSON 字符串来创建对象(二)
    简单使用JSON,JavaScript中创建 JSON 对象(一)
    【某deed网测题】D
    【题解】ACMICPC 2015 final L 哈弗曼树
    TC SRM 659 DIV1 500pt 插头DP
    BC#40D GCD值统计
    MS电面3轮
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6992710.html
Copyright © 2011-2022 走看看