从零开始学 Java - log4j 项目中的详细配置
你还会用笔来写字么
我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来;有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了;有时候写出来了一大堆字之后,等一段时间回过头来看,这时候会去质疑这些字是不是自己写的。
我在每一年的七月总是会拿起笔去写一篇日志,来使自己对过去的一年产生一些仪式感。那问题来了:在程序的世界里,写日志的意义是什么?
日志存在的意义
毫无疑问,日志的意义就是为了记录。记录下程序执行的过程、调试信息、错误信息以及我们想要输出的信息,这可能就是一个最简单且完整的日志系统了,正常来说,我们的项目中一般并不会有一个强大的监控系统以及日志系统,最多是写一个log文件,然后打印出错误信息,其实,对于一个对监控要求不是很高,没有太多开发时间的互联网项目,这个简单的 log 文件就够了,完全可以满足我们的需要。
Java 项目中大家一般都喜欢使用 log4j 来记录日志。
Log4j 是 Apache 的一个开源项目,通过使用Log4j ,我们可以控制日志信息输送的目的地是控制台、文件、 GUI 组件,甚至是套接口服务器、NT 的事件记录器、 UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
特别简单的配置
一、在 CLASSPATH 下建立 log4j.properties文件,其实就是/src/目录下。
# Priorities are: DEBUG, INFO, WARN, ERROR, or FATAL.
log4j.rootCategory=INFO, CONSOLE, FILE
logs.dir=${catalina.base}/logs/springdemo/
logs.filename=logs
fileBufferSize=20480
#log to File
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${logs.dir}/${logs.filename}
log4j.appender.FILE.encoding=UTF-8
log4j.appender.FILE.Append=true
log4j.appender.FILE.LocationInfo=true
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d(%r) --> %l: %m %x %n
log4j.appender.FILE.bufferSize=${fileBufferSize}
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
就这么简单。你先不要管这些是什么意义,下面会讲的。怎么使用呢?
二、使用

就这么简单。
这里的配置意思是:打印 Info 级别的日志信息,调试运行会输出在控制台并写入文件。文件地址为 Tomcat 目录的 logs/springdemo 文件夹下的 logs 文件中,并且会每天产生一个日志文件。如果你理解这些就大概知道怎么配置了,这里会涉及到日志级别、输出位置、日志格式、文件地址等等各种配置,自定义起来特别方便,不过你就要理解它各个属性的含义了。我这里推荐博客园园友牛奶、不加糖的一篇讲配置的文章,写的特别详细,大家可以去仔细看并配置自己想要的效果。地址:http://www.cnblogs.com/ITtangtang/p/3926665.html
下一篇从零开始学 Java - Spring MVC 统一异常处理就来讲讲怎么使用log4j对异常处理过的信息记录下来,文章的具体的案例,都可以访问我的 Github 看到 https://github.com/mafly/SpringDemo
从零开始学 Java - log4j 项目中的详细配置的更多相关文章
- log4j 在项目中的详细配置
1.添加log4j 包 2.首先在src目录下添加log4j.properties文件 log4j.rootLogger=debug, stdout, R log4j.appender.stdout= ...
- 从零开始学 Java - 我放弃了 .NET ?
这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...
- 从零开始学Java——个人笔记(持续更新中)
从零开始学Java 学习流程 第一阶段:建立编程思想 Java概述 变量 运算符 控制结构 数组.排序和查找 面向对象编程(基础) 面向对象编程(中级) 项目&学习以致用 编程之乐 第二阶段: ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)
你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)
硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...
- 从零开始学 Java - Spring AOP 实现用户权限验证
每个项目都会有权限管理系统 无论你是一个简单的企业站,还是一个复杂到爆的平台级项目,都会涉及到用户登录.权限管理这些必不可少的业务逻辑.有人说,企业站需要什么权限管理阿?那行吧,你那可能叫静态页面,就 ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- 从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问
还记得那些美妙的夜晚吗 你洗洗打算看一个小电影就睡了,这个时候突然想起来今天晚上是服务器更新的日子,你要在凌晨时分去把最新的代码更新到服务器,以保证明天大家一觉醒来打开网站,发现昨天的 Bug 都不见 ...
随机推荐
- 《Entity Framework 6 Recipes》中文翻译系列 (39) ------ 第七章 使用对象服务之配置模型和使用单复数服务
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-3 配置模型 问题 你想了解配置模型中的各种选项. 解决方案 当你添加一个AD ...
- 启用WebApi 2里的Api描述信息(Help下的Description)
环境:vs2013+web api 2 问题:默认情况下新建的Web Api 2项目,自带的Help页下会显示Api的相关信息,但Description那一栏无法获取到数据,如下图所示: 解决: 1. ...
- 蓄水池(Reservoir_sampling)抽样算法简记
摘要 1.适用场合 2.算法简介 3.代码例子 4.Spark RangePartitioner 中的应用(待补充) 内容 1.适用场合:从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数 ...
- Android EditText悬浮在输入法之上
Android EditText悬浮在输入法之上 使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需 ...
- Box Model,边距折叠,内联和块标签,CSSReset
一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与 ...
- 解密jQuery内核 DOM操作的核心buildFragment
文档碎片是什么 http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-B63ED1A3 DocumentFragment is a & ...
- jQuery源码分析系列(40): 动画设计
前言 jQuery动画是通过animate这个API设置执行的,其内部也是按照每一个animate的划分封装了各自动画组的行为, 包括数据过滤.缓动公式.一些动画默认参数的设置.元素状态的调整.事件的 ...
- 使用Ubuntu 12.04作为日常电脑环境
搜狗输入法出来之后,我觉得有必要写一篇博客说明一下,如何使用Ubuntu作为日常的电脑系统.我使用的Ubuntu版本是12.04,没有使用Ubuntukylin,因为的电脑比较老,使用那个版本,电脑有 ...
- scikit-learn 线性回归算法库小结
scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输 ...
- Java (JVM) Memory Model – Memory Management in Java
原文地址:http://www.journaldev.com/2856/java-jvm-memory-model-memory-management-in-java Understanding JV ...