先准备好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. .NET高级代码审计(第五课) .NET Remoting反序列化漏洞

    0x00 前言 最近几天国外安全研究员Soroush Dalili (@irsdl)公布了.NET Remoting应用程序可能存在反序列化安全风险,当服务端使用HTTP信道中的SoapServerF ...

  2. .NET Core下开源任务调度框架Hangfire的Api任务拓展(支持秒级任务)

    HangFire的拓展和使用 看了很多博客,小白第一次写博客. 最近由于之前的任务调度框架总出现问题,因此想寻找一个替代品,之前使用的是Quartz.Net,这个框架方便之处就是支持cron表达式适合 ...

  3. DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置

    感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p ...

  4. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  5. 网络编程-socket(二)

    https://www.cnblogs.com/mys6/p/10587673.html(网络编程) 持续通话 总结 # 网络开发的架构 :C/S B/S# mac地址是什么 -身份证号# ip地址 ...

  6. AC1000纪念

  7. 杀掉所有 skynet 进程

    ps aux | grep skynet | awk '/config/{print $2}' | xargs kill

  8. poi 读取使用 Strict Open XML 保存的 excel 文档

    poi 读取使用 Strict Open XML 保存的 excel 文档 某项目有一个功能需要读取 excel 报表内容,使用poi读取时报错: 具体错误为: org.apache.poi.POIX ...

  9. iOS-项目创建多个target

    在开发中,有时需要两个或多个APP版本,每个版本的改动,不是很多,但是需要另外打包,那么我们就有两套方案: 1.重新开发,把代码复制一遍,然后在修改: 2.用一套代码,根据需求生成不同的包: 我们一般 ...

  10. centOS7.10 KDE桌面字体设置推荐

    安装完centOS7.10的KDE桌面后,第一次使用觉得字体太难看了,特别是终端,看着很难受,调整多次后觉得如下设置舒服很多,分享出来以供参考. 其中等宽字 这样整体看着就会舒服很多 ******** ...