关于JAVA日志
虽然工作有一年了,做了好几个项目,但是对于日志这一块还只局限于拷贝配置文件,对于实现细节和灵活使用都还不会,主要的原因还是以前一直没有重视,在经历了好几个项目以后越发的觉得日志的重要性了。所以这几天都花点时间去研究一下日志这一块
1.log4j
最主要的三个概念:
- loggers:负责采集日志信息。
- appenders:负责将日志信息发布到不同地方。
- layouts:负责以各种风格格式化日志信息
Logger 对象
最上一层是 Logger 对象,该对象负责获取日志信息,并存储于一个分层的命名空间之中
Layout 对象
Layout 层提供了用于以各种风格格式化日志信息的对象,在发布日志信息之前,它为 appender 对象提供支持。
Layout 对象对于发布日志信息非常重要,它使日志变得可读、可复用。
Appender 对象
该对象位于分层架构中的较低一层,Appender 对象负责将日志信息发布到不同目的地,比如数据库、文件、控制台、Unix Syslog 等。
Level 对象
Level 对象定义了日志信息的粒度和优先级。API 定义了七种级别:OFF、DEBUG、INFO、ERROR、WARN、FATAL、ALL。
Filter 对象
Filter 对象用来分析日志信息,进而决定该条日志是否被记录。
一个 Appender 对象可对应多个 Filter 对象,当日志信息传给 Appender 对象时,与其关联的所有 Filter 对象需要判断是否将日志信息发布到目的地。
ObjectRenderer
ObjectRenderer 对象负责为传入日志框架的不同对象提供字符串形式的表示,Layout 对象使用该对象来准备最终的日志信息。
LogManager
LogManager 对象管理日志框架,它负责从系统级的配置文件或类中读取初始配置参数。
log4j的配置:
1.将配置文件log4j.properties拷贝到classpath下面
2.设置Log4j.rootLogger=level,appender1,appender2,
3.日志等级:
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
- ALL
Appender有下面这些:
- AppenderSkeleton
- AsyncAppender
- ConsoleAppender
- DailyRollingFileAppender
- ExternallyRolledFileAppender
- FileAppender
- JDBCAppender
- JMSAppender
- LF5Appender
- NTEventLogAppender
- NullAppender
- RollingFileAppender
- SMTPAppender
- SocketAppender
- SocketHubAppender
- SyslogAppender
- TelnetAppender
- WriterAppender
Appender一般是这样设置的:
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%c{5}] - %m%n
其实就是设置Appender的各种属性,对于不同的Appender,可以看api进行属性的设置
下面是log4j的几遍文章:
http://wiki.jikexueyuan.com/project/log4j/sample-program.html
http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html
http://www.cnblogs.com/ArtsCrafts/archive/2013/06/07/log4j8.html
2016/10/08添加:
今天在处理一个很老的项目的时候 想要看一下sql打印的情况 但是无论怎么修改log4j.properties 就是不能够显示任何的日志 除了tomcat的日志 就只有一句
Initializing Spring FrameworkServlet 'springServlet'
这样让我很诧异 后来仔细一看连这句话估计也是tomcat打印的,我没有跟代码,初步估计可能是因为spring的log使用的类加载器是继承tomcat的。这些还是小事,最主要的是为何无论怎么配置日志都不能出现,后来查日志看到说我绑定了多个slf4j的实现,我以为把多个实现改成一个就可以了 但是还是太天真了, 最后翻看mybatis的官网 这样说:
不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。 这种做法不免让人悲催,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在了,按照优先级顺序,Log4J自然就被忽略了!不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以通过在MyBatis的配置文件mybatis-config.xml里面添加一项setting(配置)来选择一个不同的日志实现。 <configuration>
ok 现在只要在mybatis-config.xml 添加一个配置就可以啦!
关于JAVA日志的更多相关文章
- [翻译]Java日志终极指南
本文由 ImportNew - Wing 翻译自 loggly.欢迎加入翻译小组.转载请见文末要求. Java日志基础 Java使用了一种自定义的.可扩展的方法来输出日志.虽然Java通过java.u ...
- Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明
Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...
- Java日志规范
前言 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神.程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的.本文想讨论的是如何在Jav ...
- Java日志系统及框架分析
最近在考虑将容器(Tomcat)内的应用日志统一成slf4j + logback,主要目的有: 快速定位应用日志输出路径,方便日志的采集: 能动态调整日志的级别,方便线上问题定位: 方便在容器层面做扩 ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- Java学习笔记(十九)——Java 日志记录 AND log4j
[前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...
- Java程序员最常用的8个Java日志框架
转自:http://www.codeceo.com/article/8-java-log-framework.html 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用 ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
- Java日志管理方法(转载)
原文地址:http://www.cnblogs.com/leocook/p/log_java.html java开发中常见的几种日志管理方案有以下4种: 1. Commons-logging + lo ...
- Java日志记录的事儿
一.java日志组件 1.common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的 ...
随机推荐
- atitit 英文与中文与阿拉伯文的简化解决方案.docx
atitit 英文与中文与阿拉伯文的简化解决方案.docx 1. 英文与中文与阿拉伯文的简化意义1 2. 简化的主要方法分类2 2.1. 同音替代法(比如o2o)2 2.2. 符号法(比如英文i18n ...
- 每天一个linux命令(37):date命令
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...
- JS checkbox 全选 全不选
/* JS checkbox 全选 全不选 Html中checkbox: <input type="checkbox" name="cbx" value= ...
- Create New Commands in Tcl
Create New Commands in Tcl eryar@163.com 摘要Abstract:Tcl/Tk脚本可以很容易实现用户自定义的命令,方便的创建图形化的用户界面GUI,所以Tcl和T ...
- Xdebug 配置
到官网 http://www.xdebug.com/download.php 下载 找到对应PHP版本的 Xdebug ,后面带 TS 的为线程安全,本机环境为 win7 64 + php-5.5.1 ...
- JSP网站开发基础总结《六》
对于本篇需要总结的内容,量估计有点大,大家好好看哈,绝对全是干货,代码的已经运行测试,不存在问题,大家可以参考学习,下面开始本篇的内容. 1.添加数据到数据库: 如何用户在JSP页面的填写的信息输入到 ...
- poj 3352Road Construction(无向双连通分量的分解)
/* 题意:给定一个连通的无向图G,至少要添加几条边,才能使其变为强连通图(指的是边强联通). 思路:利用tarjan算法找出所有的双联通分量!然后根据low[]值的不同将双联通分量 进行缩点,最后图 ...
- 【目录】Newlife XCode组件相关文章目录
本博客所有文章分类的总目录链接:本博客博文总目录-实时更新 1.Newlife XCode组件相关文章目录 1.Newlife XCode组件资源目录汇总[2013年版] 2.Newlife ...
- SharePoint Server 2013开发之旅(一):新的开发平台和典型开发场景介绍
我终于开始写这个系列文章,实际上确实有一段时间没有动笔了.最近重新安装了一套SharePoint Server 2013的环境,计划利用工作之余的时间为大家写一点新的东西. SharePoint Se ...
- 使用office制作图章公章
制作公章的软件非常多,随便到网上一搜就有成千成百的软件或小工具,常用的有PS.Coreldraw.Ai.Word等,拥有一款office可以使用word来制作,方法挺简单,功能挺强大.寥寥数笔难以形容 ...