java日志信息 log4j 使用方法 .

java日志信息 log4j 使用方法 .
java日志信息 log4j 使用方法 .

首先把log4j.jar文件考到工程里面,然后把log4j.properties考到工程项目的src下。log4j.properties文件配置如下:

log4j.rootLogger=DEBUG, A1 ,R

log4j.appender.A1=org.apache.log4j.ConsoleAppender

https://www.360docs.net/doc/658652648.html,yout=org.apache.log4j.PatternLayout

https://www.360docs.net/doc/658652648.html,yout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}

[%c]-[%p] %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=D:\\Test_Log4j.log

log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1

https://www.360docs.net/doc/658652648.html,yout=org.apache.log4j.PatternLayout

https://www.360docs.net/doc/658652648.html,yout.ConversionPattern=%p %t %c - %m%n

以上参数下面有详解.

LogTest.java代码如下

package com.log4j.junit;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

import com.log4j.dao.EmployeeDao;

import com.log4j.entity.Employee;

/**

* 采用log4j打印日志类

* @author Administrator

*

*/

public class LogTest {

/**

* 采用单例模式

*/

static Logger logger = null;

public static void testAddMethod(EmployeeDao empDao,Employee emp) throws ClassNotFoundException{

logger=Logger.getLogger(EmployeeDao.class.getName());

PropertyConfigurator.configure(".\\src\\log4j.properties");

https://www.360docs.net/doc/658652648.html,("Info "+EmployeeDao.class.getName()+"\t "+" \t

param="+emp.getClass().getName());

//获取类的相应方法

logger.warn("Warn ...");

logger.error("Error ...");

}

}

EmployeeDao.java文件代码如下:

package com.log4j.dao;

import com.log4j.entity.Employee;

public class EmployeeDao {

public void addEmployee(Employee emp){

System.out.println(emp.getEmpId()+" "+emp.getEmpName());

}

}

Employee.java代码如下:

package com.log4j.entity;

public class Employee {

private int empId;

private String empName;

public int getEmpId() {

return empId;

}

public void setEmpId(int empId) {

this.empId = empId;

}

public String getEmpName() {

return empName;

}

public void setEmpName(String empName) { this.empName = empName;

}

}

EmployeeJuint.java代码如下:

package com.log4j.junit;

import org.junit.Test;

import com.log4j.dao.EmployeeDao;

import com.log4j.entity.Employee;

/**

* 测试员工使用log4j打印日志junit

* @author tfq

* datetime 2011-08-14

*/

public class EmployeeJuint {

@Test

public void addEmployee(){

Employee emp=new Employee();

emp.setEmpId(1);

emp.setEmpName("tfq");

EmployeeDao empDao=new EmployeeDao();

//打印日志

//LogTest.testAddMethod(EmployeeDao.class.getName());

//LogTest.testAddMethod(empDao);

try {

LogTest.testAddMethod(empDao,emp);

empDao.addEmployee(emp);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

}

运行EmployeeJuint .java中的addEmployee().在D盘的Test_Log4j.log会有如下记录:

param=com.log4j.entity.Employee

WARN main com.log4j.dao.EmployeeDao - Warn ...

ERROR main com.log4j.dao.EmployeeDao - Error ..

下面是lo4j.propertites中配置详解:

1、定义配置文件

首先使用配置文件将使我们的应用程序更加灵活配置log日志输出方式包括输出优先级、输出目的地、输出格式。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java 特性文件log4j.properties(键=值)。下面将介绍使用log4j.properties文件作为配置文件的方法:

①配置根Logger,其语法为:0

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

②配置日志信息输出目的地Appender,其语法为:

log4j.appender.appenderName = https://www.360docs.net/doc/658652648.html,.of.appender.class

log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

③配置日志信息的格式(布局),其语法为:

https://www.360docs.net/doc/658652648.html,yout = https://www.360docs.net/doc/658652648.html,yout.class

https://www.360docs.net/doc/658652648.html,yout.option1 = value1

https://www.360docs.net/doc/658652648.html,yout.option = valueN

其中,Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

2、在代码中使用Log4j

①得到记录器

使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

public static Logger getLogger( String name)

通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

②读取配置文件

当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

BasicConfigurator.configure ():自动快速地使用缺省Log4j环境。PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写

的配置文件。

例:PropertyConfigurator.configure(".\\src\\log4j.properties")

DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。

③插入记录信息(格式化日志信息)

当上两个必要步骤执行完毕,就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

Logger.debug ( Object message ) ;

https://www.360docs.net/doc/658652648.html, ( Object message ) ;

Logger.warn ( Object message ) ;

Logger.error ( Object message ) ;

在web程序中使用log4j注意问题

1、由于jsp或servlet在执行状态时没有当前路径概念,所有使用PropertyConfigurator.configure(String)语句找log4j.properties文件时要给出相对于当前jsp或servlet的路径转化成为一个绝对的文件系统路径。方法是使用

servletcontext.getrealpath(string)语句。例:

//得到当前jsp路径

String prefix = getServletContext().getRealPath("/");

//读取log4j.properties

PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");

2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例:

log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。

日志记录与异常处理规范(精)

日志记录与异常处理规范(2006-09-19 10:02:15转载日志记录与异常处理规范 1 日志记录规范规范日志设计规范主要目的是节省工作量,帮助对问题进行诊断。最终,终端用户可以获得更好的应用程序,并能从技术支持团队获得迅速的响应。 1.1 日志API 在使用 Java 平台进行开发时,使用的日志 API:Log4j-1. 2.8.jar 1.2 日志分类 l Security:记录外部对系统进行的各项操作 l Business:记录和跟踪业务逻辑执行过程 l Performance:记录和跟踪代码执行情况 1.3 日志级别日志级别有: l Debug: 包含了非常广泛的上下文信息,用于问题诊断。 l Info: 用于在产品环境中(粒度较粗)帮助跟踪执行过程的上下文消息。 l Warning: 警告消息,说明系统中可能存在问题。例如,如果这个消息类别是有关安全性方面的。 l Error: 错误消息说明系统中出现了严重的问题。这种问题通常都是不可恢复的,需要人工进行干预。表1 日志记录程序 public class Log4JTest { // Logging 类由EMIP平台提供Logging logging = Logging.getInstance("STDOUT"; public void testLogging( { //安全日志 https://www.360docs.net/doc/658652648.html,("安全类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. SECURITY,"安 全类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. SECURITY,"安全类型INFO级日 志记录",new RuntimeException(; logging.error("安全类型ERROR级日志记录"; logging.error(Logging. SECURITY,"安全类型ERROR级日志记录"; logging.error(Logging. SECURITY,"安全类型ERROR级日志记录",new RuntimeException(; //业务日志 https://www.360docs.net/doc/658652648.html,("业务类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. BUSINESS,"业务类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.error("业 务类型ERROR级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR 级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; //系统日志 https://www.360docs.net/doc/658652648.html,("业务类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. BUSINESS,"业务类型INFO级日志记录"; https://www.360docs.net/doc/658652648.html,(Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.error("业 务类型ERROR级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR 级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; https://www.360docs.net/doc/658652648.html,("系统类型INFO级日志记录";

应用系统日志规范

应用系统日志规范 在应用程序中添加程序日志记录可以跟踪代码运行时轨迹,作为日后 审计的依据;并且担当集成开发环境中的调试器的作用,向文件打印代码 的调试信息。本规定Jave EE项目必须使用Commons-Logging作为日志接 口封装,选用Apache提供的可重用组件Log4j作为底层实现。 1.日志命名规范 根日志(root logger)位于日志层次的最顶层,它的日志级别不能指派为空;不能通过使用它的名字直接得到它,而应该通过类的静态方法Logger.getRootLogger得到它(指root logger)。所有其他的日志可通 过静态方法Logger.getLogger来实例化并获取,这个方法 Logger.getLogger把所想要的logger的名字作为参数,一般取本类的名字作为参数。 2.日志信息级别规范 日志信息输出的优先级从高到低至少应分为五档,分别是Fatal、ERROR、WARN、INFO、DEBUG。这些级别用来指定这条日志信息的重要程度。在测试阶段可以打开所有级别的日志,系统上线后只允许输出INFO以上级别(含INFO)。 各级别的日志信息作用规定如下: 2.1致命(Fatal) 严重的错误,系统无法正常运行,如硬盘空间满等。这个级别很少被用,常暗含系统或者系统的组件迫近崩溃。

2.2错误(Error) 系统可以继续运行,但最好要尽快修复的错误。这个级别用的较多,常常伴随Java异常,错误(Error)的环境不一定会造成系统的崩溃,系统可以继续服务接下来的请求。 2.3警告(Warn) 系统可以正常运行,但需要引起注意的警告信息。这个级别预示较小的问题,由系统外部的因素造成的,比如用户输入了不符合条件的参数。 2.4信息(Info) 系统运行的主要关键时点的操作信息,一般用于记录业务日志。但同时,也应该有足够的信息以保证可以记录再现缺陷的路径。这个级别记录了系统日常运转中有意义的事件。 2.5调试(Debug) 系统运行中的调试信息,便于开发人员进行错误分析和修正,一般用于程序日志,关心程序操作(细粒度),不太关心业务操作(粗粒度)。 系统出现问题时,必须抛出异常,在处理异常时记录日志,且日志级别必须是前三个级别(Fatal\Error\Warning)中的一种。 3.日志配置规范 所有的日志配置文件放在src目录下,编译时随同.class文件一同拷贝到(%webapp_HOME%)\WEB-INF\classes\目录下,这些配置文件必须采用properties文件的编写方法, commons-logging.properties文件用来指定commons-logging的实现为log4j,log4j.properties文件用来配置 log4j的所有参数,日志配置信息不得配置在这两个文件以外的文件中。

【IT专家】Log4j关闭Spring和Hibernate日志打印

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Log4j关闭Spring和Hibernate日志打印 2018/02/13 264 这里所说的关闭不是全部不打印,只需要修改一下log级别就好了。普通的info信息其实我们是不看的,因此直接设置成warn或error级别就好了。 ?#close java-jdbc log outlog4j.logger.java.sql.Connection=ERRORlog4j.logger.java.sql.Statement=ERRORlog4 j.logger.java.sql.PreparedStatement=ERROR#close spring log outlog4j.logger.springframework=WARN#close hibernate log outlog4j.logger.opensymphony.oscache=ERRORlog4j.logger.sf.navigator=ERRORlog4j.l ogger.sf.acegisecurity=WARNlog4j.logger.sf.acegisecurity.intercept.event.LoggerListener =WARNlog4j.logger.apachemons=ERRORlog4j.logger.apache.struts=WARNlog4j.logger .displaytag=ERRORlog4j.logger.ibatis.db=WARNlog4j.logger.apache.velocity=WARNlo g4j.logger.canoo.webtest=WARNlog4j.logger.hibernate.ps.PreparedStatementCache=WA RNlog4j.logger.hibernate=WARNlog4j.logger.hibernate.SQL=ERRORlog4j.logger.hibern ate.type=ERRORtips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

log4j输出到文件和数据库

log4j输出到文件和数据库 控制台的实现就不说了,这里提供两种实例的配置,一种是输出为文件的(每天输出一个文件),一种为输出到数据库的配置。 1、输出到文件: Properties代码 log4j.rootCategory=WARN, CONSOLE, FILE https://www.360docs.net/doc/658652648.html,.surfilter.bt=FATAL,TOFILE log4j.appender.TOFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.TOFILE.Threshold=FATAL log4j.appender.TOFILE.File=E:/javascpace/bt/logs/union.html log4j.appender.TOFILE.Append=true log4j.appender.TOFILE.ImmediateFlush=true log4j.appender.TOFILE.DatePattern='.'yyyy-MM-dd'.html' https://www.360docs.net/doc/658652648.html,yout=com.surfilter.bt.util.FormatHTMLLayout log4j.rootCategory=WARN, CONSOLE, FILE https://www.360docs.net/doc/658652648.html,.surfilter.bt=FATAL,TOFILE log4j.appender.TOFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.TOFILE.Threshold=FATAL log4j.appender.TOFILE.File=E:/javascpace/bt/logs/union.html log4j.appender.TOFILE.Append=true log4j.appender.TOFILE.ImmediateFlush=true log4j.appender.TOFILE.DatePattern='.'yyyy-MM-dd'.html' https://www.360docs.net/doc/658652648.html,yout=com.surfilter.bt.util.FormatHTMLLayout 这里的com.surfilter.bt.util.FormatHTMLLayout是重写了log4j提供的HTMLLayout类,具体代码如下: Java代码 import java.text.SimpleDateFormat; import java.util.Map; import org.apache.log4j.HTMLLayout; import https://www.360docs.net/doc/658652648.html,yout; import org.apache.log4j.Level; import org.apache.log4j.helpers.Transform; import org.apache.log4j.spi.LocationInfo; import org.apache.log4j.spi.LoggingEvent;

java日志与验证码

java日志: 日志的网上很多也: https://www.360docs.net/doc/658652648.html,/view/ccb3ce1efc4ffe473368abdf.html 你自己看看。我们的系统里面一般都是自己写了一个程序。将用户的操作信息,IP,时间,操作内容写入我们数据库里面。 Tomcat的日志一般我们用绿色版,它自带有日志功能。 java验证码: 1 根据一个随机值,生成一个模糊图片,然后将随机值封装到session中。 1.1 生成图片的类: package com.framework.security; import java.awt.*; import java.awt.image.BufferedImage; import java.io.Serializable; import java.util.Random; /** *随机验证码 *User: *Date:2006-11-2 *Time:11:31:00 *To change this template use File|Settings|File Templates. */ public class ImgCheckCode implements Serializable { private String charRandomCode = ""; private BufferedImage imageRandomCode; private int width; private int height; public ImgCheckCode(int width, int height) { this.width = width; this.height = height; create(4); } public ImgCheckCode(int width, int height, int length) { this.width = width; this.height = height;

Java日志系统框架的设计与实现

Java日志系统框架的设计与实现 在Java领域,存在大量的日志组件,open-open收录了21个日志组件。日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有着重要的作用,我们可以把Java日志系统看作是必不可少的跟踪调试工具。 1.简介 日志系统是一种不可或缺的跟踪调试工具,特别是在任何无人职守的后台程序以及那些没有跟踪调试环境的系统中有着广泛的应用。长期以来,日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有非常现实的意义。这种服务通常以两种方式存在: 1.日志系统作为服务进程存在。Windows中的的事件日志服务就属于这种类型,该类型的日志系统通常通过消息队列机制将所需要记录的日志由日志发送端发送给日志服务。日志发送端和日志保存端通常不在同一进程当中,日志的发送是异步过程。这种日志服务通常用于管理员监控各种系统服务的状态。 2.日志系统作为系统调用存在。Java世界中的日志系统和Unix环境下诸多守护进程所使用的日志系统都属于这种类型。日志系统的代码作为系统调用被编译进日志发送端,日志系统的运行和业务代码的运行在同一进程空间。日志的发送多数属于同步过程。这种日志服务由于能够同步反映处系统运行状态,通常用于调试跟踪和崩溃恢复。 本文建立的日志系统基本属于第二种类型,但又有所不同。该日志系统将利用Java线程技术实现一个既能够反映统一线程空间中程序运行状态的同步日志发送过程,又能够提供快速的日志记录服务,还能够提供灵活的日志格式配置和过滤机制。 1.1系统调试的误区 在控制台环境上调试Java程序时,此时往控制台或者文本文件输出一段文字是查看程序运行状态最简单的做法,但这种方式并不能解决全部的问题。有时候,对于一个我们无法实时查看系统输出的系统或者一个确实需要保留我们输出信息的系统,良好的日志系统显得相当必要。因此,不能随意的输出各种不规范的调试信息,这些随意输出的信息是不可控的,难以清除,可能为后台监控、错误排除和错误恢复带来相当大的阻力。 1.2日志系统框架的基本功能 一个完备的日志系统框架通常应当包括如下基本特性: 所输出的日志拥有自己的分类:这样在调试时便于针对不同系统的不同模块进行查询,从而快速定位到发生日志事件的代码。

日志记录规范

平常我的系统开发运行过程中,记录关键信息对于完善和修改提出了明确的建议。但是在现实的一些应用中的日志记录比较混乱,导致无法准确快速的定位问题发生的地方和问题发生的时候以及问题发生的场景。我就依据我平时使用log4j进行日志记录的一点心得与大家分享如何更加规范的记录日志信息,如果有不妥的问题请明示我好进行相应的改进,共同进步哈。 1.要记录什么类型日志 我们的系统开发常常会涉及到系统致命错误日志,系统可控错误日志,用户操作日志和系统运行日志这四大类日志的记录。记录致命性错误用于记录会影响整个系统正常运行的错误,比如我们在开发过程中的try...catch...模块中抛出的一些未能预料到的系统错误,而且这种错误会导致系统运行失败的信息进行记录。系统可控错误日志,这一类的日志发生之后其实不会导致系统运行出现异常的,可能是对某些数据的初始化深入验证出现的问题。用户操作日志这一类日志量比较大,同时这一类日志用于跟踪用户的行为分析是非常的重要的应为可以作为用户数据挖掘发现用户的喜好等一些信息。程序运行信息记录,这一类信息用于记录子过程运行情况。 2.致命错误如何记录 如上所述我们明确的错误日志,是用来记录系统费预测性错误,可能导致网站爆出黄页相应的操作流程无法进行下去。或则在一些安装程序中记录导致系统突然退出的相关信息。在防御式编程中经常使用try....catch...模块包括一个程序的运行过程,catch的最后捕获的一级Exception是我们无法控制也无法预测的系统运行异常,这里我们记录fatal致命性错误,我这里一般记录的是一场发生的堆栈信息。如下程序块: [html]view plaincopyprint? 1.try { 2. VerificationUser(user); 3. String result = OrderTicket(user,flight); 4. orderticket.trace("执行占座成功!占座成功的代码: "+result); 5. https://www.360docs.net/doc/658652648.html,(user.getName()+"执行了占座操作,占座编码 为"+result); 6. String ticketNo= GenariteTicket(result); 7. genariteTicket.trace("执行出票成功!出票成功票号: "+ticketNo);

log4j日志输出规范

Log4j 使用参考规范

目录 简介 (3) 1. 概述 (3) 2. 库主件 (3) 3. 主要组件 (3) 配置 (4) 1. 相关配置文件 (4) 2. 详细配置说明 (5) 3. 输出方式 (5) 4. 输出格式 (6) 调用 (7) 注意问题 (7) 参考文档 (8)

1. 概述 程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。log4j 提供分级方法在程序中嵌入日志记录语句。日志信息具有多种输出格式和多个输出级别。 使用一个专门的日志记录包,可以减轻对成千上万的System.out.println 语句的维护成 本,因为日志记录可以通过配置脚本在运行时得以控制。log4j 维护嵌入在程序代码中的日志记录语句。通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。 五级输出,依次为DEBUG、INFO、WARN、ERROR、FATAL。使用者可根据不同的 需求,设定不同的输出级别,则得到不同级别的输出结果。 (在正式生产环境中,一般设定为 warn) 2. 库主件 目前log4j 2.0 版本需要JAVA5(logging services designed for Java 5 and later);1.3 版不被推荐使用,我们使用的最多的是1.2版。目前可download 的是1.2.17 版。下载地址:https://www.360docs.net/doc/658652648.html,/dyn/closer.cgi/logging/log4j/ 库文件一般为名为log4j.jar, 使用时加入lib路径下。 3. 主要组件 Log4j有三个主要组件:loggers、appenders和layouts。这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。Logger:记录器;Logger 负责处理日志记录的大部分操作。 Appender:挂载点;Appender 负责控制日志记录操作的输出。 Layout:布局;Layout 负责格式化Appender 的输出。

日志规范(初稿)

日志规范 一.什么时候打日志 原则:一般来说日志分为两种:业务日志和异常日志,使用日志我们希望能达到以下目标: 1.对程序运行情况的记录和监控; 2.在必要时可详细了解程序内部的运行状态; 3.对系统性能的影响尽量小 通常情况下在程序日志里记录一些比较有意义的状态数据:程序启动,退出的时间点;程序运行消耗时间;耗时程序的执行进度;重要变量的状态变化。除此之外,在公共的日志里规避打印程序的调试或者提示信息。 日志等级: 1.成品阶段:我的代码是INFO 等级,第三方库是WARN。 2.测试、集成阶段:我的代码是DEBUG 等级,第三方库是WARN(或 者如果需要的话是INFO)。 3.开发阶段:任何有意义的信息。 注意:不建议使用TRACE/FINEST 等级 二.怎么打日志(日志最佳实践) 编码规范: 1.在一个对象中通常只使用一个Logger对象,Logger应该是static final 的,只有在少数需要在构造函数中传递logger的情况下才使用private

final。 static final logger_LOG=loggerFactory.getLogger(Main.class); 2.输出Exceptions的全部Throwable信息,因为logger.error(msg)和logger.error(msg,e.getMessage())这样的日志输出方法会丢失掉最重要的StackTrace信息。 例子:void foo(){ try { // do something... } catch ( Exception e ){ _LOG.error(e.getMessage()); // 错误 _LOG.error("Bad things : ",e.getMessage()); // 错误 _LOG.error("Bad things : ",e); // 正确 }} 3.不允许记录日志后又抛出异常,因为这样会多次记录日志,只允许记录一 次日志。 例子:void foo() throws LogException{ try{ // do something... }catch ( Exception e ){ _LOG.error("Bad things : ", e); throw new LogException("Bad things : ",e); }}

c#和java超强日志类LogTool

c#和java超强日志类LogTool C# 日志类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading; namespace LogTool { ///

/// 日志类 /// 当调用Write方法时不会造成线程阻塞,而是立即完成方法调用,因此调用线程不用等待日志写入文件 之后才返回。 /// public class Log : IDisposable { //日志对象的缓存队列 private static Queue msgs; //日志文件保存的路径 private static string path; //日志写入线程的控制标记

private static bool state; //日志记录的类型 private static LogType type; //日志文件生命周期的时间标记 private static DateTime TimeSign; //日志文件写入流对象 private static StreamWriter writer; ///

/// 创建日志对象的新实例,采用默认当前程序位置作为日志路径和默认的每日日志文件类型记录 日志 /// public Log() : this(".\\", LogType.current) { } /// /// 创建日志对象的新实例,采用默认当前程序位置作为日志路径并指定日志类型 /// /// 日志文件创建方式的枚举 public Log(LogType t) : this(".\\", t) {

Log4j 日志内容详解

Log4j详细解 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。 1.2. Log4j简介 在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI 甚至是SNMP应用中。 Log4j有三个主要的组件: Loggers(记录器),Appenders (输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明:1、Loggers Loggers组件在此系统中被分为五个级别:DEBUG、INFO、W ARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < W ARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。 假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。 Java程序举例来说: ***建立Logger的一个实例,命名为“com.foo”*** Logger logger = Logger.getLogger("com.foo"); ***"com.foo"是实例进行命名,也可以任意*** ***设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。*** logger.setLevel(https://www.360docs.net/doc/658652648.html,); Logger barlogger = Logger.getLogger("com.foo.Bar"); ***下面这个请求可用,因为W ARN >= INFO*** logger.warn("Low fuel level."); ***下面这个请求不可用,因为DEBUG < INFO*** logger.debug("Starting search for nearest gas station.");

Log4j笔记--log4j的各种输出控制的权限

Log4j笔记 ●为什么要使用日志 ?开发阶段可以发现程序的问题,排错 ?产品阶段可以记录程序运行的状况 ?Log4j就是一个简便的日志管理工具 ●System.out.println()的问题 ?不能在运行过程中打开或者关闭 ?不能有针对性地选择 ?输出的信息没有分级 ?只能输出文本信息 ?不能改变输出的位置 Log4j可以解决以上的所有问题 ●log4j简介 ?是最流行的Java日志处理框架 ?Apache的子项目 ?开源 ●log4j的使用 ?需要从Apache官方网站上下载jar包 ?添加到项目的Build Path里 ?使用示例 运行这个程序,需要log4j.properties文件 warn是指输出的日志级别;大于等于这个级别的输出才会执行,小于此级别的不会输出;级别有8种,名称固定

Console:输出的位置或者目的地,这个名字是别名,可以任意起名字 在第二行针对这个目的地进行设置 如果上面叫aaa 第二行就是log4j.appender.aaa 第三行可以设置输出目的地的一些配置信息,最常用的是输出的布局格式 对于输出到文件,还需要在这个位置指定文件的路径 log4j的核心 ●Logger 完成日志信息的处理,可以定义输出的层次和决定信息是否输出 输出的优先级顺序: ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF ALL

log4j详解与实战

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使 log4j。 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: https://www.360docs.net/doc/658652648.html,/log4j/1.2/download.html 我们先看一个最简单的示例: 【示例1】 项目结构: 【注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar 档的Java工程,然后将jar档放到lib目录下。在要使用的工程中按图所示进行引用】

Java代码: Java代码 1.package com.coderdream.log4j; 2. 3.import org.apache.log4j.Logger; 4. 5.public class HelloLog4j { 6. 7. private static Logger logger = Logger.getLogger(HelloLog4j. class); 8. 9. /** 10. * @param args 11. */

12. public static void main(String[] args) { 13. // System.out.println("This is println message."); 14. 15. // 记录debug级别的信息 16. logger.debug("This is debug message."); 17. // 记录info级别的信息 18. https://www.360docs.net/doc/658652648.html,("This is info message."); 19. // 记录error级别的信息 20. logger.error("This is error message."); 21. } 22.} 配置文件log4j.properties: Properties代码 1.#可以设置级别:debug>info>error 2.#debug:显示debug、info、error 3.#info:显示info、error 4.#error:只error 5.log4j.rootLogger=debug,appender1 6.#log4j.rootLogger=info,appender1 7.#log4j.rootLogger=error,appender1 8. 9.#输出到控制台 10.log4j.appender.appender1=org.apache.log4j.ConsoleAppender 11.#样式为TTCCLayout https://www.360docs.net/doc/658652648.html,yout=org.apache.log4j.TTCCLayout 输出结果: Console代码 1.[main] DEBUG com.coderdream.log4j.HelloLog4j - This is debug me ssage. 2.[main] INFO com.coderdream.log4j.HelloLog4j - This is info mess age. 3.[main] ERROR com.coderdream.log4j.HelloLog4j - This is error me ssage. 通过配置文件可知,我们需要配置3个方面的内容: 1、根目录(级别和目的地);

Log4j基础使用

Log4j日志工具 基本介绍 原理:输出级别,输出样式,输出目的地 常用:commons-logging(Apache组织)、Log4j、jdk1.4自带的Logging Commons-logging日志控件可以控制使用Log4j还是使用Logging,当有Log4j 时使用Log4j,否则使用logging。 Log4j:Log4j只在初始化的时候打开文件,并保持对文件的写控制,到系统结束时在 关闭文件,这样使IO次数达到最小,提高了运行效率。 Log4j可使用xml和属性文件配置使用。 输出级别:All,TRACE(跟踪),DEBUG(调试),INFO(信息),WARNING(警告), ERROR(错误),FITAL(致命),OFF 使用后面的输出级别会自动屏蔽掉前面的输出级别。 配置3个重要概念 日志记录器(Logger) 输出地(Appender) 日志格式话器(Layout) Logger配置介绍 Log4j中有一个跟记录器rootLogger,它是所有Logger的父类。 语法:log4j.rootLogger=ERROR, yin //配置所有类 https://www.360docs.net/doc/658652648.html,.newer.dao.BaseDAO=DEBUG //配置指定类 Category: https://www.360docs.net/doc/658652648.html,.newer=DEBUG //相当于com.newer下所有Logger,Gategory类似于Package Appender配置介绍 定义:表示输出到什么地方,控制台、文件、数据库、远程服务器等。 log4j.appender.yin=org.apache.log4j.ConsoleAppender // 控制台输出 # log4j.appender.yin.Threshold=DEBUG //以DEBUG以上级别输出 # log4j.appender.yin.Encoding=UTF-8 //编码方式 # log4j.appender.yin.ImmediateFlush=true //是否立即输出 # log4j.appender.yin.Target=System.err //使用System.err输出 https://www.360docs.net/doc/658652648.html,yout=org.apache.log4j.PatternLayout https://www.360docs.net/doc/658652648.html,yout.ConversionPattern=Hibernate: %m%n #号注释可省略,#注释必须另起一行,输出有 System.err和System.out

在Spring的项目中配置Log4j存放日志文件到指定目录下

在Spring中使用LOG4J为日志输出的插件已有一段日子了,但有时候发现日志文件虽然是已经在根据自己的理想存放了,但还会有些莫名其妙的项目日志文件出现tomcat内(因为项目的日志文件都以项目命名嘛,所以比较容易区分这些log)。这些令我纠结的日志文件,让我在改善一下LOG4J的配置。才发现,之前用的配置方式真是弱爆了。 1.先说自己比较理想的存放日志路径。 我比较喜欢把日志文件放在项目的WEB-INF下,然后当然有个文件夹叫logs。logs相信很多人都会存在在这样的目录下,但放在WEB-INF目录下相信还是有些人不理解。其实当然是为了资源保护了。 2.旧的方式 编写Servlet在项目部署的时候重置log4j配置文件中的日志文件存放路径。 web.xml配置如下: log4j-init com.foo.log.Log4jInit log4j_properties_patch WEB-INF/classes/log4j.properties 1 Log4Init的代码就不贴了,网上也比较多。主要作用就是修改原有的log4j.appender的File 配置修改为现在项目部署的绝对路径,方法多样,功能都一样! 问题产生了: 这种方式在Spring环境中还是会生成一些多余日志文件。因为在项目部署时,spring初始化比配置的Servlet启动的还早,所以原有的默认日志存放路径就先生效了(虽然没什么内容,也不对项目有什么影响)。 3.有没有更好的配置方式呢? 使用Spring提供的日志配置方法 web.xml添加如下代码: webAppRootKey project

log4j中文手册

Log4j手册 文档版本:1.1 编者:陈华 联系方式:clinker@https://www.360docs.net/doc/658652648.html, 发布日期:2006年4月5日

1. 简介 (1) 1. 简介 (3) 1.1 概述 (3) 1.2 主要组件 (3) 2. Logger (4) 2.1 层次结构 (4) 2.2 输出级别 (5) 3. Appenders (7) 3.1 概念说明 (7) 3.2 Appender的配置 (7) 3.3 Appender的添加性 (8) 4. Layouts (8) 4.1 概念说明 (8) 4.2 Layout的配置 (9) 5. 配置 (10) 6. 默认的初始化过程 (13) 7. 配置范例 (14) 7.1 Tomcat (14) 8. Nested Diagnostic Contexts (14) 9. 优化 (15) 9.1 日志为禁用时,日志的优化 (15) 9.2 当日志状态为启用时,日志的优化 (16) 9.3 日志信息的输出时,日志的优化 (16) 10. 总结 (16) 11. 附录 (17) 11.1 参考文档 (17) 11.2 比较全面的配置文件 (17) 11.3 日志乱码的解决 (19)

1. 简介 1.1 概述 程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。log4j提供分级方法在程序中嵌入日志记录语句。日志信息具有多种输出格式和多个输出级别。 使用一个专门的日志记录包,可以减轻对成千上万的System.out.println语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。log4j维护嵌入在程序代码中的日志记录语句。通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。 1.2 主要组件 Log4j有三个主要组件: loggers、appenders和layouts。这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。 Logger:日志记录器 Logger 负责处理日志记录的大部分操作。 Appender:日志信息的输出目的地 Appender 负责控制日志记录操作的输出。 Layout:日志格式化器 Layout 负责格式化Appender的输出。 图1-1 Log4j的类图

相关文档
最新文档