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;
    }
}
  • 测试结果

    – 控制台输出如下,

    – 工程目录路径输出如下,

四、参考引用

时间: 2024-10-08 08:26:02

Log4j日志管理的简单实例的相关文章

项目log4j日志管理详解

项目log4j日志管理详解 log4j日志系统在项目中重要性在这里就不再累述,我们在平时使用时如果没有特定要求,只需在log4j.properties文件中顶入输出级别就行了.如果要自定义输出文件,对于初次使用者可能会遇到一点的小麻烦.最近在项目中刚做了一个统计用户登录的日志文件,要求将用户登录到某个模块的信息输出到login.log中,每天生成一个已日期命名的该类文件,现share出来. 1.Log4j下载 在apache网站:jakarta.apache.org/log4j 可以免费下载到L

android log4j日志管理的使用

android中的log4j日志文件使用需要两个包,我们不需要进行配置文件的配置,一切都在代码中完成. log4j 包下载: 下载地址:http://logging.apache.org/log4j/1.2/download.html android-logging-log4j-1.0.3.jar 下载: https://code.google.com/archive/p/android-logging-log4j/downloads 全部下载完成后 eclipse中智捷导入包到libs添加饮用

用最基本的EF+MVC+JQ+AJAX+bootstrap实现权限管理的简单实例 之登陆和操作权限

先来一堆关于上篇文章的废话(不喜者点此隐藏) 今天把博客加了个小功能,就是点标题可以隐藏或展示相关内容,做法很傻,就是引用了bootstrap的两个css类和全部的js文件,其实这样的小功能完全应该自己做的,主要还是因为前端差,还有就是懒.请大家不要太过在意命名和前端样式,我并没有进入公司工作,命名没有具体规范,都是随心所欲.前端实在太差,如果你觉得颜色样式太差,只能说明我的审美有问题,咱们主要看功能实现. 上篇文章发布后有一定的推荐量和浏量,对一个初学者来说,自认为还是挺不错的.最主要的是收到

log4j+slf4j管理日志项目迁移logback+slf4j

作为一个刚踏入java语言的小学生,最近被安排了一个任务,原有的项目中使用的是log4j日志管理 要转换成logbacak的日志管理.介于之前并未深究log4j和logback日志,所以做起来也很是头疼,不得不查询资料问别人,才勉强完成,所以记录一下从头的步骤,以供别人参考,有不对地方还请大神斧正. 首先提供一下log4j和slf4j以及logback的关系图 第一步:我们项目是log4j+转slf4j管理的,要替换成logback,所以需要删除掉log4j和slf4j-log4j12的所有ja

Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)

Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j) 博客分类: Java综合 第一.Logger.getLogger()和LogFactory.getLog()的区别     1.Logger.getLogger()是使用log4j的方式记录日志:  2.LogFactory.getLog()则来自apache的common-logging包. common-logging组件:         Jakarta Commons

Java日志管理:log4j、Commons-logging、slf4

1.log4j 概述 log4j是Apache的一个开源项目,主要是用来做Java开发中的日志管理工作.主要是由三个重要组件构成的.可管理日志的优先级.输出目的地以及输出格式等.它的配置文件主要有XML和properties两种,当然,也可以在程序里配置,但实际开发中一般使用properties文件. log4j的组件 1.1.日志信息的优先级(Level) 有7个日志级别:OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL,级别从做到有一次降低. Off:关闭所有的日志记录

LogCook 一个简单实用的Android日志管理工具

众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能达到事半功倍的效果.开发者必须要明白日志的价值和意义,万万不可忽略和轻视. LogCook是一款非常简洁实用的Android日记管理工具.LogCook的中文翻译是日志厨师,你可以把它看作是一个日志美食家. 特点 作为一款日志管理工具它最大的特点就是简单实用,与Android原生的日志功能相比较它具

springboot日志管理+集成log4j

sprongboot使用的默认日志框架是Logback. 可以在application.properties配置简单日志属性,也可以单独配置logback.xml格式,还可以使用log4j来管理. 下面分别介绍自带的日志配置以及如何使用log4j来作为日志管理. 1 .自带日志管理配置: 1.1 修改application.properties #配置日志 logging.level.root=INFO logging.level.org.springframework.web=DEBUG lo

SQL Server中的事务日志管理(4/9):简单恢复模式里的日志管理

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 这个标题近乎是用词不当,因为很大程度上,运行在简单模式里不需要日志管理.在简单模式里,事务日志的唯一目的是在数据库恢复操作期间,保证事务的ACID属性,还有强制数据库的一致性和事务的持久性.事务日志不能被备份,不能用来数据库恢复,也不能用作日志传输. 在简单模式