apache log4j入门

学习一项新东西之前,我常常问自己:

这项技术是什么?

这项技术为我们做了什么?

为什么不用其他类似的技术?

如何使用这项技术?

于是我带着这些问题开始学习apache log4j

一,apache log4j是什么

The Apache Logging Services Project creates and maintains open-source software related to the logging of application behavior and released at no charge to the public.

这面这段话是apache日志服务官网首页的一段话,意思就是说用来记录程序的行为,开源免费。

而log4j是apache为Java提供的日志管理工具,目前可以用于生产的最新版本是Log4j 2.11.0,2.4及更高版本依赖于JDK7,

2.0-alpha1 to 2.3依赖于JDK6.

二,log4j为我们做了什么

2.1,日志分级

日志级别从低到高分为7个级别:

all:输出所有日志信息

debug:输出调试信息

info:输出提示信息

warn:表明可能有潜在错误的情形,输出警告信息

error :表明发生了错误事件,但不影响系统运行,输出错误信息

fatal:表明发生了严重的错误,可能导致系统停止运行

off:关闭日志输出

2.2,多样化的日志存储方式

可以输出到控制台、文件、Socket、邮件、数据库或者自定义Appender

如何配置不同的Appender,https://blog.csdn.net/qq_30788845/article/details/53083774

2.3,日志格式化

log4j,通常%加其他字符,代表以什么格式输出什么信息

三,log4j和common-logging、slf4j的关系

网上有很多关于这方面的博客,这里暂且不讨论这个问题。

四,为什么不用其他的日志工具

log4j很强大、很好用。

五,log4j.properties文件示例

下面是实际项目的log4j配置文件

###loggers###
#log4j.rootLogger=INFO,console,R
log4j.rootLogger=INFO,R
#sql
log4j.logger.com.think.base.jdbc=ERROR###consoleAppender###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss,SSS}[%t][%.30c:%L][%p]-%m%n###detailAppender###
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.Threshold=ERROR
log4j.appender.R.Append=true
log4j.appender.R.File=/srv/www/app/demo/log/detail.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{HH:mm:ss,SSS}[%t][%.30c:%L][%p]-%m%n

log4j.rootLogger=INFO,R

表示将INFO级别的日志输出到目的地R,R在后面的配置中定义

log4j.logger.com.think.base.jdbc=ERROR

表示将com.think.base.jdbc这个类的日志级别设为Error

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

表示每天产生一个日志文件

log4j.appender.R.File=/srv/www/app/demo/log/detail.log

日志文件的路径

log4j.appender.R.DatePattern='.'yyyy-MM-dd

历史日志文件名的格式,比如说今天是2018年7月26号,那么昨天的日志文件名为detail.log.2018-07-25

log4j.appender.R.layout.ConversionPattern=%d{HH:mm:ss,SSS}[%t][%.30c:%L][%p]-%m%n

%d{HH:mm:ss,SSS}表示输出时间,例如:18:20:38,448

%t表示输出线程名,例如:Thread-310

%.30c表示输出类的路径和名称(超过30个个字符的部分不会输出),例如:ve.fxc.stkkh.bus.util.BusUtils

%L表示输出行号

%p表示输出日志级别

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低版本Eclipse如何快速设置黑色主题

低版本的Eclipse(例如Kepler Service Release 2),没有自带的黑色主题,并且在线安装黑色主题会报错 去网上找了一圈结果都是骗人的,这个时候别着急,只需三个简单的步骤即可完成黑色主题配置。 下面是设置完…

tomcat-maven插件热部署(简洁版)

最近在学ssm框架,为了提高学习效率,想使用tomcat-maven插件热部署,网上有很多关于这方面的文章,但是有很多坑。 自己总结了一下,简化了多余的配置,还有运行过程中发生异常的原因。 环境:apach…

eclipse中配置jad反编译插件

1 下载Eclipse支持jad插件的jar包 将下载得到的net.sf.jadclipse_3.3.0.jar放到eclipse》plugins目录下 2 eclipse配置jad插件 下载jad.exe 3 设置文件关联

SpringCloud学习之路(一)-简单Demo

首先,我们先在C:\Windows\System32\drivers\etc路径下的hosts最后添加两个地址用于模拟服务端以及消费端的IP 127.0.0.1 dept-8001.com #微服务端127.0.0.1 client.com #消费端 SpringCloud的一个最基础Demo,本地真实模拟环境(服务的创建者以及消费者),这是我们Demo截图: 分为一…

Oracle数据库数据泵导入导出

由于开发过程中有时候无法直接连数据库,这时候需要将数据库导入开发环境中,故此总结一个完整的数据库导入导出过程。 注意expdp和impdp命令末尾都不能加分号 1 导出某个用户的所有数据库对象 1.1 Linux导出 su - oracle 授权用户grant exp_full_data…

eclipse工作区打不开的解决方案

今天上班的时候发现eclipse打开总是闪退,刚开始以为是eclipse的问题,后来才发现是工作区的问题。 分享出来,希望能够帮助遇到同样问题的人。 1 设置询问打开的工作区 eclipse安装目录\configuration\.settings\org.eclipse.ui.ide.prefs&a…

日期时间总结

今天总结一下日期时间如何处理,方便以后查看。 1 Oracle 1.1 日期格式参数及其含义说明 Oracle不区分大小写,所以下面参数大小写都可以 D 一周中的星期几 DAY 天的名字,使用空格填充到9个字符 DD …

Oracle对象被锁如何处理

1 查看被锁住的对象 select object_name,machine,s.sid,s.SERIAL# from v$locked_object l,dba_objects o ,v$session s where l.object_id  o.object_id and l.session_ids.sid; 2 解锁 将1中查询出的sid和serial#,作为参数 alter system kill session 2400,…

BeycondCompare3破解绿色版下载

链接: https://pan.baidu.com/s/1GBtkLdqU7wTAzjvn2QfHrw 提取码: rzcw 复制这段内容后打开百度网盘手机App,操作更方便哦

Oracle rowid和rownum的区别

rowid和rownum在本质上有区别: rowid rowid是物理结构上的,每插入一行数据,都会生成一条唯一的编号。可以说默认排序是根据rownum升序的,但是本质上还是根据rowid升序排列的。 rownum rownum可以说是伪列,并不存在&a…

Oracle/mysql联合查询union、union all

若无特殊说明,oracle与mysql均适用 使用场景 union、union all关键字用户将两个select查询结果集合并成一个结果集,例如:一个旧系统使用a表,同样的信息但是新系统使用了b表,这时候可以使用union或者union all关键字将…

【JAVA基础篇】反射

一、反射的概念 是指在运行过程中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用这个对象的所有方法和属性。这种动态获取信息和动态调用方法的功能称为JAVA的反射机制。 二、反射的优缺点 2.…

在线工具

分享一下很实用的在线工具 在线HTTP接口测试 草料二维码 站长之家

【JAVA基础篇】面对对象的特征

面对对象的3大特征是:封装、继承和多态 封装 封装就是将客观的事物封装成抽象的类,这个类包含这类事物共同的特性和行为,特性对应类的成员变量,行为对应类的成员方法。 封装就是将一批具有相同特性和行为的客观事物封装成抽象类…

【JAVA基础篇】final、finally和finalize

final final表示最终的、不可被更改的,用来修饰类、成员方法和变量,通常处于两方面的考虑来使用它:特殊的设计和效率。 final类 一个类如果确信没有子类或者这个类的方法不允许修改,那么就把这个类定义成final类。 final类的成…

【JAVA基础篇】抽象类和接口的区别

抽象类和接口是定义抽象概念的两种方式,正是由于抽象类和接口,才赋予了Java强大的面向对象的能力。在讨论他们的不同点之前,我们先来了解抽象类和接口。 抽象类 在面向对象的领域一切事物都是对象。对象都是通过类来描述的,但是反…

Oracle常用函数总结

Oracle函数,当任意一个参数为空字符串或者null时,结果返回null 聚合函数 count 使用方式有5种 select count(*) from student;--统计总行数 select count(0) from student;--统计总行数,括号里面的0表示什么意思? select count(id) from …

【JAVA基础篇】==、equals和hashCode的区别和联系

作用:比较两个操作数的关系,返回一个boolean类型的结果 具体含义:如果两个操作数是基本数据类型,比较值是否相等。如果两个操作数是引用类型,那么比较的是内存地址是否相同。 equals Object类的实例方法&#xff0c…

【JAVA基础篇】内部类

定义在一个类内部的类称为内部类。内部类访问权限可以是public、protected、default或private,可以声明为abstract供其他内部类或外部类继承,可以声明为static、final,也可以实现特定的接口。外部类可以访问内部类的所有方法与属性&#xff0…

【JAVA基础篇】访问权限

所谓访问权限,指的是本类的成员变量、成员方法和内部类对其他类的可见性。 四种访问权限 Java一共有四种访问权限,按照权限由大到小分别为public、protected、default和private,如果省略了访问修饰符,那访问权限就是defualt。四…