先准备好log4j需要对应的开发包:

apache-log4j-extras-1.2.17.jar

slf4j-api-1.6.1.jar

slf4j-log4j12-1.6.1.jar

然后就是在项目中准备一个log4j.xml开发文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- 设置按天滚动方式生成日志文件 -->
<!-- 将日志写到文件中 -->
<appender name="filelogger" class="org.apache.log4j.rolling.RollingFileAppender">
<!-- 设置日志编码 -->
<param name="Encoding" value="UTF-8" />
<!-- 设置按天滚动方式生成日志文件 -->
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/opt/test/log/bi_%d{yyyyMMdd}.log" />
</rollingPolicy>
<!-- 设置日志内容格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %p (%F.%L): %m%n" />
</layout>
</appender> <!-- 设置按天滚动方式生成日志文件 -->
<!-- 将日志写到Linux系统日志中 -->
<appender name="syslogger" class="org.apache.log4j.net.SyslogAppender">
<!-- 设置阈值为ERROR级别,低于ERROR级别的日志将不会写入到系统中 -->
<param name="Threshold" value="ERROR" />
<param name="SyslogHost" value="192.168.172.140" />
<param name="Facility" value="USER" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%F.%L): %m%n" />
</layout>
</appender> <!-- 设置logger日志名称,在程序中引用 -->
<logger name="logfile">
<!-- 设置日志级别为DEBUG级别 -->
<level value="debug" />
<appender-ref ref="filelogger" />
<appender-ref ref="syslogger" />
</logger>
</log4j:configuration>

关于上面日志格式常用占位符解释:

%d: 当前时间,如果要指定格式,则可以yyyy MM dd HH mm ss SSS 代表 年、月、日、时、分、秒、毫秒

%F: 日志所在代码所在文件

%L: 日志所在的行数

%m: 消息主体

%t: 程序所在线程

%n: 换行

%p: 当前日志级别

示例程序代码:

package org.lyk.action;

import java.text.SimpleDateFormat;
import java.util.Date; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/test/*")
public class Test
{
private Logger logger = LoggerFactory.getLogger("logfile");
@RequestMapping("testDemo")
public ModelAndView testDemo(String msg)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
logger.info("This is for log file " + sdf.format(new Date()));
logger.error("This is for sys log file " + sdf.format(new Date()));
return new ModelAndView("/index.jsp");
}
}

输出效果

日志文件:

Linux syslog:

程序代码:

package org.lyk.action;

import java.text.SimpleDateFormat;
import java.util.Date; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/test/*")
public class Test
{
private Logger logger = LoggerFactory.getLogger("logfile");
@RequestMapping("testDemo")
public ModelAndView testDemo(String msg)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
logger.info("This is for log file " + sdf.format(new Date()));
logger.error("This is for sys log file " + sdf.format(new Date()));
return new ModelAndView("/index.jsp");
}
}

https://pan.baidu.com/s/1kVghs83

欢迎加入QQ群参与讨论. 422683877

简明log4j配置教程的更多相关文章

  1. Log4J入门教程(二) 参数讲解

    继续接着Log4J入门教程(一)中的例子进行讲解,其中log4j.properties中的内容为    Log4j的三个重要组件—— Loggers, Appenders, Layouts ,这三个组 ...

  2. 一条数据的HBase之旅,简明HBase入门教程-Write全流程

    如果将上篇内容理解为一个冗长的"铺垫",那么,从本文开始,剧情才开始正式展开.本文基于提供的样例数据,介绍了写数据的接口,RowKey定义,数据在客户端的组装,数据路由,打包分发, ...

  3. 一条数据的HBase之旅,简明HBase入门教程-开篇

    常见的HBase新手问题: 什么样的数据适合用HBase来存储? 既然HBase也是一个数据库,能否用它将现有系统中昂贵的Oracle替换掉? 存放于HBase中的数据记录,为何不直接存放于HDFS之 ...

  4. openvpn配置教程

    openvpn配置教程 本文是为解决本地服器能从外网访问web页,从新改写(临摹) 烂泥:ubuntu 14.04搭建OpenVPN服务器这篇文章 腾讯云为服务器,本地服务器为客户端 一.服务器安装o ...

  5. VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...

  6. 使用log4j配置不同文件输出不同内容

    敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...

  7. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径

    本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...

  8. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程

    UEditor是百度开发团队奉献的一款很不错的在线编辑器.在百度自己很多产品上都有应用,本文主要是该编辑器的配置教程. 1.下载UEditor,当前最新版本是1.3.6.这里下载的.net版本,选择U ...

  9. log4j 配置

    给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件  目录 Src 3.在需要使用输出的类中使用 priva ...

随机推荐

  1. hadoop 的HDFS 的 standby namenode无法启动事故处理

    standby namenode无法启动 现象:线上使用的2.5.0-cdh5.3.2版本Hadoop,开启了了NameNode HA,HA采用QJM方式.hadoop的集群的namenode的sta ...

  2. OSLab文件描述符

      日期:2019/3/24 内容:Linux文件描述符.   一.基本概念 文件描述符(File Descriptor) 一个非负整数.应用程序利用文件描述符来访问文件.打开现存文件或新建文件时,内 ...

  3. AjaxResult

    package com.sprucetec.tms.utils; /** * AjaxReturn * * @author Yinqiang Du * @date 2016/7/12 */import ...

  4. Android根据字符串型的资源名获取对应资源id

    有时候我们想动态的根据一个字符串资源名获得到对应的资源id,如根据不同的图片名称获得对应的图片,此时就应该考虑如何实现. 大家知道,在编译Android工程时,系统会自动生成一个静态资源类R,里面根据 ...

  5. Storm入门示例

    开发Storm的第一步就是设计Topology,为了方便开发者入门,首先我们设计一个简答的例子,该例子的主要的功能就是把每个单词的后面加上Hello,World后缀,然后再打印输出,整个例子的Topo ...

  6. C#6.0语言规范(十四) 枚举

    一个枚举类型是一个独特的值类型(值类型)声明一组命名的常量. 这个例子 enum Color { Red, Green, Blue } 声明了一个名为枚举类型Color与成员Red,Green和Blu ...

  7. drf-序列化器的理解

    序列化器作用:  1.进行数据的校验 2.对数据对象进行转换 序列化:  模型类对象  ----->  python字典    用于输出, 返回给前端使用 反序列化:  前端传送的数据  --- ...

  8. 链表(上):如何实现LRU缓存淘汰算法?

    一.什么是链表 和数组一样,链表也是一种线性表. 从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构. 链表中的每一个内存块被称为节点Node. ...

  9. solr初识

    参考资料http://blog.csdn.net/l1028386804/article/details/70199983

  10. day 39 jq 学习入门2

    ---恢复内容开始--- 前情提要: jq 是用来降低js 的工作的一个组件 一:利用jq 实现动画效果 <!DOCTYPE html> <html lang="en&qu ...