log4j组件的用法(log4j1)

在实际的项目开发和维护中,日志是经常用到的一个内容。遇到问题的时候,经常需要通过日志去查出问题的所在并解决问题。

通常我们会用:

System.out.println(xxx);

来打印运行中所需要的内容。但在日志非常多的情况下,或者在项目上线的情况下,这种方式就狠不实用了。总不能盯着控制台看日志吧?如果想看前段时间的日志呢?如果要大批的改变日志打印出的内容呢?如果想只看异常信息的日志呢?所以,要使用日志组件。

Java中的日志组件有很多,如:Apache的log4j、commons-logging.jar,slf4j(slf4j做的是包装简化的工作,是把底层jdk中的日志等内容包装了)。jdk中也有日志,java.util.logging.Logger。目前在工作中接触的也就是log4j了。

log4j是apache下的一个开源项目。官网: http://logging.apache.org/, 其中有Apache下各个编程语言的日志组件。log4j现在有2和1,现在用1版本的(2版本目前还是beta版),下载log4j,其中包含log4j的jar包。版本下载1最新的log4j-1.2.17.jar。下载后,解压,把log4j的jar包放入项目的lib下,就可以开始使用了。

一、

(1)在程序中写日志,如下:

 1 import org.apache.log4j.Logger;
 2
 3 public class LoggerTest {
 4     private Logger log = Logger.getLogger(LoggerTest.class);//创建Logger对象,构造函数的参数写该类的class,表明是该类中的日志,日志中打印的信息中,类名也是这个
 5
 6     public void add() {
 7         //1. 写日志
 8         log.debug("LoggerTest debug message");
 9         log.info("LoggerTest info message");
10         log.warn("LoggerTest warn message");
11         log.error("LoggerTest error message");
12         log.fatal("LoggerTest fatal message");
13         //log输出的规则: debug < info < warn < error < fatal
14     }
15 }

log4j中的日志分五个级别,分别是debug、info、warn、error、fatal,它们的级别高低是:debug < info < warn < error < fatal。在配置文件中可以设置日志的输出级别,只有该级别的和高于该级别的日志才可以被看到。比如,在配置文件中设置的输出级别是warn,那么只有输出级别为warn、error、fatal的日志才会输出,debug和info的日志不会被输出。
该例子中,当执行到log.xxx(xxx);方法的时候,日志就会按照配置文件中的设置输出。接下来看如何写配置文件。

(2)写配置文件

在源文件包中建一个名为log4j.properties的文件(文件名固定)。

下载的log4j包中,example文件夹里是一些例子,可以参考其中的sort1.properties,sort2.properties...来写配置文件。

官网上的Java Doc是log4j的API,供查询参考。

①先看一个基本的写法:

1 log4j.appender.A1=org.apache.log4j.ConsoleAppender
2 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
3 log4j.appender.A1.layout.ConversionPattern=(%d)[%m]--%l%n
4
5 log4j.rootLogger=DEBUG,A1

第一行:表示日志的输出方式。A1是我们自己起的名字。值是ConsoleAppender类的完全限定名。ConsoleAppender表示在控制台上输出。

第二行:日志的输出形式

第三行:输出的格式,其中的括号、中括号、横线,都是普通字符,为了显示的好看而已,没有其他含义。各个"%"+字母的含义如下:

1 %m 输出代码中指定的消息
2 %p 输出优先级, 即DEBUG, INFO, WARN, ERROR, FATAL
3 %r 输出自应用启动到输出该log信息耗费的毫秒数
4 %c 输出所属的类目, 通常就是所在类的全名
5 %t 输出产生该日志事件的线程名
6 %n 输出一个回车换行符, Windows平台为“/r/n” , Unix平台为“/n”
7 %d 输出日志时间点的日期或时间, 默认格式为ISO8601, 也可以在其后指定格式, 比如: %d{yyy MMM dd
8 HH:mm:ss , SSS}
9 %l 输出日志事件的发生位置, 包括类目名、 发生的线程, 以及在代码中的行数。

第五行:rootLogger表示,src代码包下的所有包的日志级别,和使用的配置的名字。

%m是log.debug等里面写的内容

②当项目部署到服务器上后,通常把日志存在文件中,便于查找问题时使用,写法如下:

1 log4j.appender.fout=org.apache.log4j.FileAppender
2 log4j.appender.fout.layout=org.apache.log4j.PatternLayout
3 log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
4 log4j.appender.fout.file=C:/logs/system.log5 log4j.rootLogger=DEBUG, fout

第一行:使用FileAppender

第四行:写上存放日志的路径

③上一种方法日积月累之后,日志文件会变的非常大,可能上G。查看这么大的log文本,实在是不方便。通常会按照日期存放日志。

1 log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender
2 log4j.appender.fout.layout=org.apache.log4j.PatternLayout
3 log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
4 log4j.appender.fout.DatePattern=‘.‘ yyyy-MM-dd5 log4j.appender.fout.Threshold=INFO 6 log4j.appender.fout.file=C:/logs/x.log

第一行:使用DailyRollingFileAppender

第四行:表示按照日来存放日志,到了第二天,第一天的日志名称就自动由"x.log"变成"x年-月-日.log"

第五行:表示存到文件中的日志的级别。如果同时写的有:log4j.rootLogger=DEBUG, fout级别以第五行的为准

该部分可以写多个,然后设置不同的log级别,这样不同级别的log就存放在不同的文件里了。

④日志也可以根据源文件的包来存放

1 log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender
2 log4j.appender.fout.layout=org.apache.log4j.PatternLayout
3 log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
4 log4j.appender.fout.DatePattern=‘.‘ yyyy-MM-dd
5 log4j.appender.fout.file=C:/logs/x.log
6
7 log4j.logger.com.google=ERROR, fout 

第七行:log4j.logger后面加上包名,表名这个包里的日志的输出设置是fout,级别是error

时间: 2024-11-05 12:09:05

log4j组件的用法(log4j1)的相关文章

Vue组件基础用法

前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需,使用不同的组件来拼接页面.这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦.本文将详细介绍Vue组件基础用法 概述 组件是一个自定义元素或称为一个模块,包括所需的模板.逻辑和样式.在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能.通过Vue.js的声明式渲染后,

Log4j 日志详细用法

简单的说log4j就是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地.日志信息的输出格式 Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息. 程序员经常会遇到脱离java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试.这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了就只

log4j的常用用法

最近一段时间一直在用别人封装好,配置好的日志类记录日志,感觉挺好奇的.下面就记录一下用log4j处理日志的常用用法. 至于log4j是什么,我不清楚,暂时也觉得没必要太深入,只知道是处理日志比较好的选择. Game Starts 参考文档 1)官方pdf文档 2)配置log4j(和详细) 3)Log4j 的日志级别 依赖jar包 1)log4j-api-2.0.2.jar    2)log4j-core-2.0.2.jar [D] 主要的类 1)Logger 看名字也就知道是干什么的了,就是靠他

Log4j的常见用法

对于log4j,一般常用的只要保存如下的内容为属性文件即可: 1 #log4j.rootLogger=DEBUG,A1,R 2 log4j.rootLogger=INFO,A1,R 3 log4j.appender.A1=org.apache.log4j.ConsoleAppender 4 log4j.appender.A1.layout=org.apache.log4j.PatternLayout 5 log4j.appender.A1.layout.ConversionPattern=%-d

依赖注入、递归组件的用法

处理边界情况 $root 用来访问根组件 $parent 用来从一个子组件访问父组件的实例 ref 和 $refs 的用法 在组件上面使用 ref 这个属性绑定,属性值自取,然后就可以通过 $refs.属性名 这种方式去获取到指定组件的实例了. 其实不仅仅是组件能够使用 ref ,标签元素也能使用. 依赖注入 现在我们有一个需求,如果我们存在多个组件嵌套的,然后现在其中某一个组件想访问其曾祖父组件的方法,那么使用上面两种方式都是不可取的,这个时候官方提供了 provide 和 inject 这两

SSIS: Lookup组件高级用法,生成推断成员(inferred member)

将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比如下图StoreID为1的经销商不存在于我们经销商维度表中,我们现在要使用lookup组件进行匹配,并生成维度key. 操作步骤 1. 先添加一个派生列组件,将StoreID转为字符,等会儿生成键值会用到. 2. 先进行匹配一次,然后把无法匹配到的记录传到下一个Lookup 组件  Insert 

开源.NET FTP组件edtFTPnet 用法

edtFTPnet官方网站:http://www.enterprisedt.com/products/edtftpnet/ 目前最新版本为2.2.3,下载后在bin目录中找到edtFTPnet.dll,在项目中添加引用.下面为一些用法: 1.FTP服务器根目录为web,在它下面创建如下图示的目录和上传文件 FTPConnection.CommandEncoding = Encoding.GetEncoding("GBK") 指定GBK编码以支持中文文件名FTPConnection.Cr

Vue-Router 源码解析(五) router-link组件的用法及原理

该组件支持用户在具有路由功能的应用中(点击)导航,默认渲染成带有正确链接的<a>标签,可以通过tag属性生成别的标签. 它本质上是通过在生成的标签上绑定了click事件,然后执行对应的VueRouter实例的push()实现的,对于router-link组件来说,可以传入以下props: to                                    表示目标路由的链接,当被点击后,内部会立刻把to的值传到router.push(),所以这个值可以是一个字符串或者是描述目标位置的对

isScroll的滚动组件的用法

<div class="wrapper">  <ul>     <li>1</li>     <li>2</li>      <li>3</li>  </ul></div> .wrapper{ position:relative; //这个属性必须写,可以为relative或absolute.原因见js部分 margin:50px auto; //上下50px的mar