你还会用笔来写字么

我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来;有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了;有时候写出来了一大堆字之后,等一段时间回过头来看,这时候会去质疑这些字是不是自己写的。

我在每一年的七月总是会拿起笔去写一篇日志,来使自己对过去的一年产生一些仪式感。那问题来了:在程序的世界里,写日志的意义是什么?

日志存在的意义

毫无疑问,日志的意义就是为了记录。记录下程序执行的过程、调试信息、错误信息以及我们想要输出的信息,这可能就是一个最简单且完整的日志系统了,正常来说,我们的项目中一般并不会有一个强大的监控系统以及日志系统,最多是写一个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 项目中的详细配置的更多相关文章

  1. log4j 在项目中的详细配置

    1.添加log4j 包 2.首先在src目录下添加log4j.properties文件 log4j.rootLogger=debug, stdout, R log4j.appender.stdout= ...

  2. 从零开始学 Java - 我放弃了 .NET ?

    这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...

  3. 从零开始学Java——个人笔记(持续更新中)

    从零开始学Java 学习流程 第一阶段:建立编程思想 Java概述 变量 运算符 控制结构 数组.排序和查找 面向对象编程(基础) 面向对象编程(中级) 项目&学习以致用 编程之乐 第二阶段: ...

  4. 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)

    你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...

  5. 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)

    硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...

  6. 从零开始学 Java - Spring AOP 实现用户权限验证

    每个项目都会有权限管理系统 无论你是一个简单的企业站,还是一个复杂到爆的平台级项目,都会涉及到用户登录.权限管理这些必不可少的业务逻辑.有人说,企业站需要什么权限管理阿?那行吧,你那可能叫静态页面,就 ...

  7. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  8. 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)

    从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...

  9. 从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问

    还记得那些美妙的夜晚吗 你洗洗打算看一个小电影就睡了,这个时候突然想起来今天晚上是服务器更新的日子,你要在凌晨时分去把最新的代码更新到服务器,以保证明天大家一觉醒来打开网站,发现昨天的 Bug 都不见 ...

随机推荐

  1. [ASP.NET MVC 小牛之路]05 - 使用 Ninject

    在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...

  2. sun.misc.BASE64Encoder找不到jar包的解决方法

    1.右键项目->属性->java bulid path->jre System Library->access rules->resolution选择accessible ...

  3. Performance Monitor2:Peformance Counter

    Performance Counter 是量化系统状态或活动的一个数值,Windows Performance Monitor在一定时间间隔内(默认的取样间隔是15s)获取Performance Co ...

  4. LINQ系列:LINQ to SQL Take/Skip

    1. Take var expr = context.Products .Take(); var expr = (from p in context.Products select p) .Take( ...

  5. Plant Design Review Based on AnyCAD

    Plant Design Review Based on AnyCAD eryar@163.com Abstract. AVEVA Review is used to 3D model visuali ...

  6. 自定义配置UEditor 工具栏上的按钮列表

    修改配置项的方法: 1. 方法一:修改 ueditor.config.js 里面的 toolbars 2. 方法二:实例化编辑器的时候传入 toolbars 参数 方法一:在ueditor.confi ...

  7. easyui中方向键、tab键、回车键

    1.html中 function changeTab(event, i) { var keyCode = event.keyCode; var inputs = jQuery("#table ...

  8. 在 ML2 中 enable local network - 每天5分钟玩转 OpenStack(79)

    前面完成了一系列准备工作,本节开始将创建各种 Neutorn 网络,我们首先讨论 local network. local network 的特点是不会与宿主机的任何物理网卡相连,也不关联任何的 VL ...

  9. Neutron 功能概述 - 每天5分钟玩转 OpenStack(65)

    从今天开始,我们将学习 OpenStack 的 Networking Service,Neutron.Neutron 的难度会比前面所有模块都大一些,内容也多一些.为了帮助大家更好的掌握 Neutor ...

  10. linker command failed with exit code

    转载 : http://blog.csdn.net/chengwuli125/article/details/25051741