搜档网
当前位置:搜档网 › 使用Log4j如何实现分级输出

使用Log4j如何实现分级输出

使用Log4j如何实现分级输出
使用Log4j如何实现分级输出

log4j日志分级输出到不同文件的配置

基础:log4j的配置项说明:

log4j总共有6中级别,从高到低分别为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

其中:

DEBUG Level 指出细粒度信息事件对调试应用程序是非常有帮助的。INFO level表明消息在粗粒度级别上突出强调应用程序的运行过程。WARN level表明会出现潜在错误的情形。

ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。FATAL level指出每个严重的错误事件将会导致应用程序的退出。

ALL Level是最低等级的,用于打开所有日志记录。

OFF Level是最高等级的,用于关闭所有日志记录。

# log4j.rootLogger中配置的ERROR,表示一下配置的所有配置的级别的起点为:ERROR。即只能显示、存储ERROR以及ERROR以上级别的日志

# 若在此配置了ERROR,下边配置了INFO级别的日志要存储在指定的文件中,实际是不会存储的

# 若配置INFO级别的日志存在文件1中,ERROR级别的文件,存在文件2中,

# 若有个ERROR的日志的话,两个文件都是可以存储的;若有个INFO 级别的文件的话,则只有文件1会存储该日志,文件2是不会存储的

日志的输出格式配置:

# %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 )

一、所需的jar包

log4j-1.2.9.jar

commons-logging-1.0.4.jar

二、利用xml配置log4j

步骤:

1、在web.xml中,添加log4j监听器配置,所填内容如下(若直接将log.properties放在src目录下,则不需要配置监听)

log4jConfigLocation

/WEB-INF/config/log4j.xml

org.springframework.web.util.Log4jConfigListener

2、在/WEB-INF/config/文件夹下,建立log4j.xml。log4j.xml的内容如下:

class="org.apache.log4j.ConsoleAppender">

-->

class="org.apache.log4j.RollingFileAppender">

class="org.apache.log4j.RollingFileAppender">

class="org.apache.log4j.RollingFileAppender">

特别注意:如想只把log4j的debug信息输出到debug.log.error信息输出到error.log,info信息输出到info.log

必须使用xml方式进行配置才能够支持filter过滤元素。

properties方式可以用log4j.appender.IF.Threshold = INFO来限制输出级别,但是只能输出你配置的级别,以及比你所配置的级别大的级别。不能精确到只输出某个级别的日志。例如我们配置

log4j.appender.IF.Threshold = INFO,则在输出文件输出数据INFO,以及WARN、ERROR、FATAL级别的日志,而不能只输出INFO级别的日志

在properties方式中,可以用如下配置现在输出级别,

log4j.appender.IF.filter.myrange=org.apache.log4j.varia.LevelRangeFi lter

log4j.appender.IF.filter.myrange.levelMax=INFO

log4j.appender.IF.filter.myrange.levelMin=INFO

但是实测,不能满足要求。

3、在class类中使用log4j

package com.tianze.jmsn.test;

import org.apache.log4j.Logger;

import org.apache.log4j.xml.DOMConfigurator;

public class TestLogger {

static Logger logger =

Logger.getLogger(TestLogger.class.getName());

public static void main(String[] s){

DOMConfigurator.configureAndWatch("D://log4j.xml"); //模拟导入log4j.xml配置文件,在实际中,要用web.xml中配置log4j监听

logger.debug("----logger debug ----");

https://www.sodocs.net/doc/d39055524.html,("----logger info ----");

logger.warn("----logger warn ----");

logger.error("----logger errors ----");

logger.fatal("----logger fatal ----");

}

}

4、输出结果:

d:/lin/log4j/debug.log 中,输出:----logger debug ----

d:/lin/log4j/infor.log 中,输出:----logger info ----

d:/lin/log4j/error.log 中,输出:----logger error ----

d:/lin/log4j/fatal.log 中,输出:----logger fatal ----

三、利用properties方式配置

1、在web.xml中配置监听(若直接将log.properties放在src目录下,则不需要配置监听)

log4jConfigLocation

/WEB-INF/config/log4j.properties

org.springframework.web.util.Log4jConfigListener

2、在/WEB-INF/config/文件夹下,建立log4j.properties配置文件,配置文件内容如下:

####################################################### ########################

#定义最低输出基本为INFO,

#定义各输出设备的名字:

#stdout表示控制台输出;

#INFOF表示info级别的日志输出

#WARNF表示warn级别的日志输出

#ERRORF表示error级别的日志输出

#FATALF表示fatal级别的日志输出

log4j.rootLogger = INFO, stdout, INFOF, WARNF, ERRORF

### 输出到控制台###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

https://www.sodocs.net/doc/d39055524.html,yout = org.apache.log4j.PatternLayout

https://www.sodocs.net/doc/d39055524.html,yout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

## 输出到日志文件,每天生成一个日志,配置

log4j.appender.IF.Threshold = INFO,实际是INFO或者INFO以上级别的日志,都会记录在该文件中###

https://www.sodocs.net/doc/d39055524.html,F = org.apache.log4j.DailyRollingFileAppender https://www.sodocs.net/doc/d39055524.html,F.File = d:/lin/log4j/info.log

https://www.sodocs.net/doc/d39055524.html,F.Append = true

#定义日志输出级别,该日志文件中,可输出INFO、WARN、ERROR、FATAL级别的文件

https://www.sodocs.net/doc/d39055524.html,F.Threshold = INFO

https://www.sodocs.net/doc/d39055524.html,yout = org.apache.log4j.PatternLayout

#后缀可以是KB, MB 或者是GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。

log4j.appender.EF.MaxFileSize=100MB

#指定可以产生的滚动文件的最大数。

https://www.sodocs.net/doc/d39055524.html,F.MaxBackupIndex=2

#配置级别拦截,其中myrange为拦截器的名字,这个必须要有(暂时不好用,原因为查明)

#https://www.sodocs.net/doc/d39055524.html,F.filter.myrange=org.apache.log4j.varia.LevelR angeFilter

#https://www.sodocs.net/doc/d39055524.html,F.filter.myrange.levelMax=INFO

#https://www.sodocs.net/doc/d39055524.html,F.filter.myrange.levelMin=INFO

https://www.sodocs.net/doc/d39055524.html,yout.ConversionPattern = %-d{yyyy-MM-dd

HH:mm:ss}-[%p] [%l] %m%n

### 保存异常信息到单独文件,每天生成一个日志,其中

log4j.appender.EF.Threshold = ERROR,表示ERROR以及ERROR 以上级别的日志,要记录在该文件中###

log4j.appender.WARNF= org.apache.log4j.DailyRollingFileAppender log4j.appender.WARNF.File = d:/lin/log4j/warn.log

log4j.appender.WARNF.Append = true

#定义日志输出级别,该日志文件中,可输出WARN、ERROR、FATAL 级别的文件

log4j.appender.WARNF.Threshold = WARN

https://www.sodocs.net/doc/d39055524.html,yout = org.apache.log4j.PatternLayout

# 后缀可以是KB, MB 或者是GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。

log4j.appender.WARNF.MaxFileSize=100MB

#指定可以产生的滚动文件的最大数。

log4j.appender.WARNF.MaxBackupIndex=2

#配置级别拦截,其中myrange为拦截器的名字,这个必须要有(暂时不好用,原因为查明)

#log4j.appender.WARNF.filter.myrange=org.apache.log4j.varia.Level RangeFilter

#log4j.appender.WARNF.filter.myrange.levelMax=WARN

#log4j.appender.ERRORF.filter.myrange.levelMin=WARN

https://www.sodocs.net/doc/d39055524.html,yout.ConversionPattern

= %-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

### 保存异常信息到单独文件,每天生成一个日志,其中

log4j.appender.EF.Threshold = ERROR,表示ERROR以及ERROR 以上级别的日志,要记录在该文件中###

log4j.appender.ERRORF =

org.apache.log4j.DailyRollingFileAppender

log4j.appender.ERRORF.File = d:/lin/log4j/error.log

log4j.appender.ERRORF.Append = true

#定义日志输出级别,该日志文件中,可输出WARN、ERROR、FATAL 级别的文件

log4j.appender.ERRORF.Threshold = ERROR

https://www.sodocs.net/doc/d39055524.html,yout = org.apache.log4j.PatternLayout

# 后缀可以是KB, MB 或者是GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。

log4j.appender.EF.MaxFileSize=100MB

#指定可以产生的滚动文件的最大数。

log4j.appender.ERRORF.MaxBackupIndex=2

#配置级别拦截,其中myrange为拦截器的名字,这个必须要有(暂时不好用,原因为查明)

#log4j.appender.ERRORF.filter.myrange=org.apache.log4j.varia.Leve lRangeFilter

#log4j.appender.ERRORF.filter.myrange.levelMax=ERROR

#log4j.appender.ERRORF.filter.myrange.levelMin=ERROR

https://www.sodocs.net/doc/d39055524.html,yout.ConversionPattern

= %-d{yyyy-MM-dd HH:mm:ss}-[%p] [%l] %m%n

3、在class类中使用

package com.tianze.jmsn.test;

import org.apache.log4j.Logger;

public class TestLogger {

static Logger logger =

Logger.getLogger(TestLogger.class.getName());

public static void main(String[] s){

logger.debug("----logger debug ----");

https://www.sodocs.net/doc/d39055524.html,("----logger info ----");

logger.warn("----logger warn ----");

logger.error("----logger errors ----");

logger.fatal("----logger fatal ----");

}

}

4、输出结果:

d:/lin/log4j/infor.log 中,输出:

----logger info ----

----logger warn ----

----logger error ----

d:/lin/log4j/warn.log 中,输出:----logger warn ----

----logger error ----

d:/lin/log4j/error.log 中,输出:----logger error ----

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

日志记录与异常处理规范(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.sodocs.net/doc/d39055524.html,("安全类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. SECURITY,"安 全类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. SECURITY,"安全类型INFO级日 志记录",new RuntimeException(; logging.error("安全类型ERROR级日志记录"; logging.error(Logging. SECURITY,"安全类型ERROR级日志记录"; logging.error(Logging. SECURITY,"安全类型ERROR级日志记录",new RuntimeException(; //业务日志 https://www.sodocs.net/doc/d39055524.html,("业务类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. BUSINESS,"业务类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.error("业 务类型ERROR级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR 级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; //系统日志 https://www.sodocs.net/doc/d39055524.html,("业务类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. BUSINESS,"业务类型INFO级日志记录"; https://www.sodocs.net/doc/d39055524.html,(Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.error("业 务类型ERROR级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR 级日志记录"; logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; https://www.sodocs.net/doc/d39055524.html,("系统类型INFO级日志记录";

Jena_中文教程_本体API(经典)

Jena 简介 一般来说,我们在Protege这样的编辑器里构建了本体,就会想在应用程序里使用它,这就需要一些开发接口。用程序操作本体是很必要的,因为在很多情况下,我们要自动生成本体,靠人手通过Protege创建所有本体是不现实的。Jena 是HP公司开发的这样一套API,似乎HP公司在本体这方面走得很靠前,其他大公司还在观望吗? 可以这样说,Jena对应用程序就像Protege对我们,我们使用Protege操作本体,应用程序则是使用Jena来做同样的工作,当然这些应用程序还是得由我们来编写。其实Protege本身也是在Jena的基础上开发的,你看如果Protege 的console里报异常的话,多半会和Jena有关。最近出了一个Protege OWL API,相当于对Jena的包装,据说使用起来更方便,这个API就是Protege 的OWL Plugin所使用的,相信作者经过OWL Plugin的开发以后,说这些话是有一定依据的。 题目是说用Jena处理OWL,其实Jena当然不只能处理OWL,就像Protege 除了能处理OWL外还能处理RDF(S)一样。Jena最基本的使用是处理RDF(S),但毕竟OWL已经成为W3C的推荐标准,所以对它的支持也是大势所趋。 好了,现在来点实际的,怎样用Jena读我们用Protege创建的OWL本体呢,假设你有一个OWL本体文件(.owl),里面定义了动物类 (https://www.sodocs.net/doc/d39055524.html,/ont/Animal,注意这并不是一个实际存在的URL,不要试图去访问它),并且它有一些实例,现在看如下代码: OntModel m = ModelFactory.createOntologyModel(); File myFile = ...; m.read(new FileInputStream(myFile), ""); ResIterator iter = m.listSubjectsWithProperty(RDF.type, m.getResource("http:// https://www.sodocs.net/doc/d39055524.html,/ont/Animal")); while (iter.hasNext()) { Resource animal = (Resource) iter.next(); System.out.println(animal.getLocalName()); } 和操作RDF(S)不同,com.hp.hpl.jena.ontology.OntModel是专门处理本体(Ontology)的,它是com.hp.hpl.jena.rdf.model.Model的子接口,具有Model的全部功能,同时还有一些Model没有的功能,例如listClasses()、listObjectProperties(),因为只有在本体里才有“类”和“属性”的概念。

应用系统日志规范

应用系统日志规范 在应用程序中添加程序日志记录可以跟踪代码运行时轨迹,作为日后 审计的依据;并且担当集成开发环境中的调试器的作用,向文件打印代码 的调试信息。本规定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:感谢大家的阅读,本文由我司收集整编。仅供参阅!

网上超人气计算机免费视频教程大全

网上超人气计算机免费视频教程大全(下载地址) 2009-07-13 21:33 视频网络管理员试题讲解深入浅出,详细讲解! https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=185&wh=helploving 视频局域网组网技术视频教程深入浅出,详细讲解! https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=212&wh=helploving 视频希赛视频点播平台,IT技术和管理视频大展销希赛视频点播,信息资源学习的海洋,课程分工明确,细致,IT技术管理的展示平台,让你无时不在信息学习培训中得到知识的享受,专家讲解具体到位,学习课程安排合理流畅,通过希赛视频平台,找到你的需求,解决你学习的难题,轻松获取知识的硕果。https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=124&wh=helploving 视频网络管理员考试串讲视频教程本串讲视频教程根据最新的网络管理员考 试大纲和作者进行考试辅导与阅卷的经验,对其中的难点问题进行了详细的分析和讲解。对于网络基础知识、网络应用配置、HTML标记语言和ASP动态编程等有关技术和工具进行详细的讲解。并详细讲解了上下午试题解答方法和技巧,以及考试中出现的常见问题及对策。 https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=63&wh=helploving 视频 IT项目管理视频教程根据PMBOK2004知识体系,结合我国IT项目建设和管理的实际情况,对信息系统项目管理所涉及的知识领域进行了详细的讲解。https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=37&wh=helploving 视频系统分析师视频教程本视频教程就考试中经常出现的一些问题进行了归 纳和总结,压缩了所有考试重点和难点知识。所总结的考试重点知识包括了(基础知识、案例分析、论文)实际考试时除专业英语以外的90%以上的考试知识点,而这些知识点几乎在每次考试中都会出现。 https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=10&wh=helploving 视频网络安全设备与技术视频教程介绍网络安全设备种类及工作原理、优缺点和典型应用。 https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=42&wh=helploving 视频信息处理技术员串讲视频深入浅出,详细讲解! https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=173&wh=helploving 视频信息系统监理师试题讲解视频深入浅出,详细讲解! https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=186&wh=helploving 视频信息系统项目管理师考试串讲视频教程根据最新的信息系统项目管理师 考试大纲和作者进行考试辅导和阅卷的经验,对其中的难点问题进行了详细的分析和讲解。https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=75&wh=helploving 视频二级Visual Basic语言视频教程集中了考试所有的难点和重点知识的精深讲解,可以保证既不漏掉考试必需的知识点,又不加重考生备考负担,使考生轻松、愉快地掌握知识点并领悟二级Visual Basic考试的真谛。 https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=19&wh=helploving 视频 Java程序设计深入浅出,详细讲解! https://www.sodocs.net/doc/d39055524.html,/user/xch/from.asp?id=204&wh=helploving 视频二级Access数据库视频教程集中了考试所有的难点和重点知识的精深讲解,可以保证既不漏掉考试必需的知识点,又不加重考生备考负担,使考生轻松、愉快地掌握知识点并领悟二级Access考试的真谛。

log4j输出到文件和数据库

log4j输出到文件和数据库 控制台的实现就不说了,这里提供两种实例的配置,一种是输出为文件的(每天输出一个文件),一种为输出到数据库的配置。 1、输出到文件: Properties代码 log4j.rootCategory=WARN, CONSOLE, FILE https://www.sodocs.net/doc/d39055524.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.sodocs.net/doc/d39055524.html,yout=com.surfilter.bt.util.FormatHTMLLayout log4j.rootCategory=WARN, CONSOLE, FILE https://www.sodocs.net/doc/d39055524.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.sodocs.net/doc/d39055524.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.sodocs.net/doc/d39055524.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.sodocs.net/doc/d39055524.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教程

以前都是把所有日志都输出到一个文件下面,今天有个同事问想把某个包下的日志输出到 指定的地方,于是就在网上查了一些资料,总结一下,以免以后用到。 一、log4j是什么? Log4j是一个开源的日志记录组件,其产品已经相当的成熟,且使用非常的广泛。在工程 中以易用,方便等代替了 System.out 等打印语句。 Log4j的目标是:它允许开发人员以任意的精细程度控制哪些日志说明被输出。通过使用 外部的配置文件,可以在运行时配置它。 Log4j的具体在 https://www.sodocs.net/doc/d39055524.html,/log4j/找到它(有使用的文档说明)。另外,log4j已经被转换成 C, C++, C#, Perl, Python, Ruby, 和 Eiffel 语言。 二、通常我们建立一个log4j.properties文件放在src下,编译之后就生成在../web- inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可,中定位这 个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什 么样的信息、输出到什么地方。 Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明: 1、 Loggers Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。 假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息 就不显示了。 其语法表示为: org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

日志记录规范

平常我的系统开发运行过程中,记录关键信息对于完善和修改提出了明确的建议。但是在现实的一些应用中的日志记录比较混乱,导致无法准确快速的定位问题发生的地方和问题发生的时候以及问题发生的场景。我就依据我平时使用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.sodocs.net/doc/d39055524.html,(user.getName()+"执行了占座操作,占座编码 为"+result); 6. String ticketNo= GenariteTicket(result); 7. genariteTicket.trace("执行出票成功!出票成功票号: "+ticketNo);

进销存教程03

员工部门CRUD管理 Junit测试套件 @RunWith(Suite.class) @SuiteClasses({DepartmentServiceTest.class, EmployeeServiceTest.class }) /** * 单表的测试类必须放到前面 */ public class AllTests { } OpenSessionInViewFilter 异常:could not initialize proxy - no Session 在访问员工列表时候:${https://www.sodocs.net/doc/d39055524.html,} xxxAction->xxxService->openSession->BaseDao->closeSession->xxxSer vice->xxxAction->jsp Web.xml Osiv->openSession->struts2->xxxAction->xxxService->->BaseDao->xxx Service->xxxAction->jsp->closeSession 必须配置在struts的过滤器的前面 osiv org.springframework.orm.hibernate3.support.OpenSess ionInViewFilter osiv *.action

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.sodocs.net/doc/d39055524.html,/dyn/closer.cgi/logging/log4j/ 库文件一般为名为log4j.jar, 使用时加入lib路径下。 3. 主要组件 Log4j有三个主要组件:loggers、appenders和layouts。这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。Logger:记录器;Logger 负责处理日志记录的大部分操作。 Appender:挂载点;Appender 负责控制日志记录操作的输出。 Layout:布局;Layout 负责格式化Appender 的输出。

Grails_教程资料

构建您的第一个Grails 应用程序 【IT168技术文档】请允许我借助另一种开源 Web 开发框架—— Ruby on Rails ——来介绍 Grails。Rails 一发布就迷住了开发人员。Rails 的脚手架功能使您可以用以前所需时间的一小部分完成一个新的项目。支持 Rails 的约定优于配置(convention over configuration)思想意味着,应用程序可以根据常识性的命名模式自动进行组装(auto-wire),而不必借助繁杂的、容易出错的 XML 配置文件。Ruby 的元编程功能使对象可以神奇地在运行时继承所需的方法和字段,而不会扰乱源代码。 Rails 配得上它所受到的赞美和推崇(现在仍然如此),但是它使 Java 开发人员面临困难的选择。您会因为一个新平台的承诺而放弃自己熟悉的 Java 平台吗?如何处理已有的 Java 代码、已有的生产服务器和经验丰富的 Java 开发人员? 关于本系列 Grails 是一种新型 Web 开发框架,它将常见的 Spring 和 Hibernate 等 Java 技术与当前流行的约定优于配置等实践相结合。Grails 是用 Groovy 编写的,它可以提供与遗留 Java 代码的无缝集成,同时还可以加入脚本编制语言的灵活性和动态性。学习完 Grails 之后,您将彻底改变看待 Web 开发的方式。 Grails 为您提供 Rails 风格的开发体验,同时以可靠的 Java 技术作为坚强后盾。但是 Grails 不仅仅是 Rails 通往 Java 平台的简单入口。Grails 吸取了 Rails 的经验,并将它们与现代 Java 开发的意识相结合。可以认为 Grails 是受 Rails 启发,而不是由 Rails 转化而来。 作为 Grails 入门系列的开篇,本文介绍 Grails 框架,展示它的安装方法,遍览如何构建第一个Grails 应用程序:介绍本系列后续文章的内容。 Groovy 的威力 就像 Rails 与 Ruby 编程语言联系非常紧密一样,Grails 也离不开 Groovy(请参阅参考资料)。Groovy 是一种动态语言,它在 JVM 上运行,并且与 Java 语言无缝集成。如果阅读了 developerWorks 上的大型实战 Groovy 系列,那么您已经了解了这种语言的威力。如果没有,也不必担心—在学习 Grails 的过程中,您将了解到很多关于 Groovy 的知识。Groovy 应该不难学,因为它是特意为 Java 开发人员而设计的。 例如,Groovy 可以大大减少 Java 代码的数量。在 Groovy 中,不再需要为字段编写 getter 和setter 方法,因为 Groovy 会自动提供它们。不再需要编写 for Iterator i = list.iterator() 来循环遍历一系列的项;list.each 可以做相同的事情,而且看上去更简洁,表达更清晰。简言之,Groovy 就是 21 世纪的 Java 语言。 如果 Java 开发人员只有重新编写整个应用程序才能利用 Groovy,那么 Groovy 对他们就没有多大的吸引力了。令人高兴的是,Groovy 可以无缝地与已有的代码库集成。Groovy 不会替代 Java 语言—它只是提供了增强。您可以很快地掌握 Groovy,因为说到底,Groovy 代码就是 Java 代码。这两种语言是如此兼容,甚至可以将一个 .java 文件重命名为一个 .groovy 文件—例如,将 Person.java 改为Person.groovy —从而得到一个有效的(可执行的)Groovy 文件(虽然这个 Groovy 文件并没有用到Groovy 提供的任何语法)。

日志规范(初稿)

日志规范 一.什么时候打日志 原则:一般来说日志分为两种:业务日志和异常日志,使用日志我们希望能达到以下目标: 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); }}

red5入门

Red5入门 1、下载、安装JRE、Red5,二者都可以安装到有空格的目录下,这部分没啥好说的,我用 的版本分别是:Red5-0.7.0和Sun jdk1.6.0_12 2、到RED5的安装目录,找到doc/templates目录,该目录中存放了一个标准的RED5应用 程序模版myapp,将其复制到RED5安装目录中的webapps目录下,并改名为你喜欢的文件夹名,比如你要开发一个聊天的程序,那么可以把myapp改为myChat,这个名字就是以后你要连接的服务名了。 3、.在WEB-INF中新建一个文件夹src用来存放程序的源代码,新建一个classes文件夹用 来存放编译后的文件。 4、打开Eclipse,将工作区指定为RED5安装目录下webapps,然后新建一个项目,项目名 为myChat.这个时候你应该发现刚才myChat中的文件都被加载进来了,我们首先把src 目录指定为源代码目录,右键选择src,在弹出的菜单中选择Build Path->Use as Source Folder,即将其指定为代码文件夹。接下来要指定项目的目标目录,在项目名上右键选择Properties,选择Java Bulid Path,在选择Source标签,在下面的Browse中选择Classes 目录,将其指定为目标目录。然后选择Libraries,点击Add External JARs,将RED5安装目录下的red5.jar包含进来。 5、这个时候,在Eclipse的左边应该多了WEB-INF/src这样一个东东,我们将要在这里开 始写入我们的第一个项目代码。右键选择它,在弹出的菜单中选择New->Package,新建一个包,举例,包名可以为org.d5.first,然后再在生成的org.d5.first这个包上继续右键选择New->File,输入文件名Application.java。并在建好的文件中输入以下代码: package org.d5.first; import org.red5.server.adapter.ApplicationAdapter; public class Application extends ApplicationAdapter { public String login() { return"Welcome to Chat Servers"; } } 6、进行配置。编辑WEB-INF下的red5-web.xml,找到bean id=”web.handler”一句,将 class=”XXX”中的XXX位置修改为org.d5.first.Application,这样本程序将以刚才写的Application来运行。编辑web.xml,找到webAppRootKey,将其下面的param-value标签中的值修改为/myChat。编辑red5-web.properties,将第一句修改为webapp.contextPath=/myChat 7、删除目录webapps\myChat\WEB-INF下的log4j.properties的配置文件或者将其改名为其 它,修改相同目录下的文件web.xml,一定要删除掉下面的代码,而不能仅仅注释掉: log4jConfigLocation /WEB-INF/log4j.properties 8、编译项目 9、重新启动RED5服务器

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) {

相关主题