第一步:添加pom文件依赖

<!-- log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>

第二步:在resources目录下新建一个log4j.xml文件

log4j.xml:

注:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://toolkit.alibaba-inc.com/dtd/log4j/log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CONSOLE-APPENDER" class="org.apache.log4j.ConsoleAppender">
<param name="encoding" value="UTF-8" />
<param name="threshold" value="debug"></param>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-32t - %m%n" />
</layout>
</appender>
<appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="./logs/default.log"/>
<param name="append" value="true"/>
<param name="encoding" value="UTF-8"/>
<param name="threshold" value="debug"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-32t - %m%n"/>
</layout>
</appender> <appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="./logs/error.log"/>
<param name="append" value="true"/>
<param name="encoding" value="UTF-8"/>
<param name="threshold" value="error"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-32t - %m%n"/>
</layout>
</appender> <appender name="HOSPITAL-WEB" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="./logs/web.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<param name="threshold" value="debug" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-32t - %m%n" />
</layout>
</appender> <logger name="yxm.zyf.love" additivity="false"><!-包名->
<level value="debug" /> <!-debug日志太多了可以改成info级别打印日志->
<appender-ref ref="HOSPITAL-WEB" />
<appender-ref ref="ERROR-APPENDER" />
</logger> <!-- <logger name="yxm.zyf.love" additivity="false">
<level value="debug" />
<appender-ref ref="CONSOLE-APPENDER" />
<appender-ref ref="ERROR-APPENDER" />
<appender-ref ref="DEFAULT-APPENDER" />
</logger> --> <root>
<level value="debug" />
<appender-ref ref="CONSOLE-APPENDER" />
<appender-ref ref="ERROR-APPENDER" />
<appender-ref ref="DEFAULT-APPENDER" />
</root> </log4j:configuration>

第三步:给大家一个工具类参考一下,封装了4个级别的日志

import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.Logger; /**
* @author Zhangyufeng
*
*/
public class LoggerUtil { private static final String TRACE_MARKER = "[TraceId:{0}] "; /**
* 生成trace的模板
*
* @param template
* @param parameters
* @return
*/
public static String getMessage(String template, Object... parameters) { return MessageFormat.format(TRACE_MARKER, getTraceId()) + MessageFormat.format(template, parameters);
} /**
* <p>
* 生成调试级别日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成debug级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void debug(Logger logger, String template, Object... parameters) {
if (logger.isDebugEnabled()) {
logger.debug(getMessage(template, parameters));
}
} /**
* <p>
* 生成调试级别日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成info级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void info(Logger logger, String template, Object... parameters) {
if (logger.isInfoEnabled()) {
logger.info(getMessage(template, parameters));
}
} /**
* <p>
* 生成调试级别日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成warn级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void warn(Logger logger, String template, Object... parameters) {
logger.warn(getMessage(template, parameters));
} /**
* <p>
* 生成调试级别日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成error级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void error(Logger logger, String template, Object... parameters) {
logger.error(getMessage(template, parameters));
} /**
* <p>
* exception日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成warn级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void warn(Throwable e, Logger logger, String template, Object... parameters) {
logger.warn(getMessage(template, parameters), e);
} /**
* <p>
* exception日志
* </p>
* <p>
* 根据带参数的日志模板和参数集合,生成error级别日志
* 带参数的日志模板中以{数字}表示待替换为变量的日志点,如a={0},表示用参数集合中index为0的参数替换{0}处
* </p>
*
* @param logger
* logger引用
* @param template
* 带参数的日志模板
* @param parameters
* 参数集合
*/
public static void error(Throwable e, Logger logger, String template, Object... parameters) {
logger.error(getMessage(template, parameters), e);
} /**
* traceid
*
* @return
*/
private static String getTraceId() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//格式化对象
String tempD = sdf.format(new Date());
return tempD+((int) (Math.random() * 900) + 100);
}
}

第四部:创建日志对象

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; import yxm.zyf.love.domian.RoomDO;
import yxm.zyf.love.mapper.RoomMapper;
import yxm.zyf.love.utils.LoggerUtil;
import yxm.zyf.love.utils.StringUtil;
import yxm.zyf.love.utils.URLencord;
import yxm.zyf.love.vo.payVo; @RestController
public class hospitalpay {
private final static Logger logger = Logger.getLogger(hospitalpay.class);//给类初始化日志对象 @Autowired
private RoomMapper roomMapper; @ResponseBody
@RequestMapping(value = "pay")
public void pay(HttpServletRequest req, @RequestBody String a) {
System.out.println(req.getAttribute("industry"));
System.out.println(req.getParameter("industry"));
Map<String, Object> map = StringUtil.transStringToMap(URLencord.URLDecoderString(a), "&", "=");
for (String key : map.keySet()) {
System.out.println("key:" + key + ", value:" + map.get(key));
}
System.out.println(map);
System.out.println(JSON.parseObject(JSON.toJSONString(map)));
payVo payvo=JSON.parseObject(JSON.toJSONString(map), payVo.class);
System.out.println(payvo);
} @ResponseBody
@RequestMapping(value = "room")
public RoomDO room() {
RoomDO roomdo= roomMapper.selectByPrimaryKey(1);
LoggerUtil.info(logger, "出参roomdo:{0}", roomdo);//打印info级别的日志
System.out.println(roomdo);
return roomdo;
}
}

第五步:运行打印日志

会生成3个日志文件,这里只配置了3个文件,需要自行添加

打印的日志信息:

springboot添加log4j日志配置log4j.xml生成日志文件的更多相关文章

  1. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

  2. 日志配置log4j 打印线程号

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # Set root logger level to WARN and a ...

  3. 检查REDO日志相关信息并生成HTML文件的脚本

    生成HTML格式的文件 内容有: 检查数据库版本.REDO日志组情况, 最近20次日志切换频率检查--日志间的归档时间间隔, 这对查看数据库的IO繁忙时段 统计指定日期当天每小时的归档日志产生量--日 ...

  4. jquery读取XML 生成页面文件

    $.get("../../js/data.xml", function (xml) { $(xml).find("local").each(function ( ...

  5. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  6. spring boot日志及Log4j日志配置

    1.默认实现的日志配置 Spring boot默认已经集成了logging,同时也是默认开启的,如果想根据自己的需求对日志进行配置,方法很简单--只需要在配置文件中进行相应设置,这里提供我自己的配置如 ...

  7. log4j日志配置和使用

    一.日志配置变量参数说明 1. 日志设置说明:# log4j.rootLogger = debug,stdout,D,E# 等号之后的值表示appender对象,每个apperder对象表示一个日志输 ...

  8. (转)Springboot日志配置(超详细,推荐)

    Spring Boot-日志配置(超详细) 更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. Spring Boot-日志配置超详细 默认日志 L ...

  9. springboot 日志配置

    maven依赖中添加了 spring-boot-starter-logging : <dependency> <groupId>org.springframework.boot ...

随机推荐

  1. 深度学习课程笔记(二)Classification: Probility Generative Model

    深度学习课程笔记(二)Classification: Probility Generative Model  2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...

  2. git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

    格式化 格式化是许多开发人员在协作时,特别是在跨平台情况下,遇到的令人头疼的细小问题. 由于编辑器的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符, 一些细微的空格变化会不经意地 ...

  3. R语言可视化学习笔记之添加p-value和显著性标记--转载

    https://www.jianshu.com/p/b7274afff14f?from=timeline #先加载包 library(ggpubr) #加载数据集ToothGrowth data(&q ...

  4. spoj IITWPC4F - Gopu and the Grid Problem 线段树

    IITWPC4F - Gopu and the Grid Problem no tags  Gopu is interested in the integer co-ordinates of the ...

  5. 使用ajax无法跨源问题总结

    参考文章: 浏览器同源政策及其规避方法 跨域资源共享 CORS 详解 使用jQuery实现跨域提交表单数据 <form action="http://v.juhe.cn/weather ...

  6. log4net配置使用

    1.配置文件 app.config <?xml version="1.0" encoding="utf-8" ?> <configuratio ...

  7. java获取当前项目或类路径

    // 获取当前项目的目录 File directory = new File("");// 参数为空 String courseFile = directory.getCanoni ...

  8. mkdir -p a/b 表示创建目录a,并创建目录a的子目录b

    mkdir -p 命令解释 2016年01月13日 14:24:03 阅读数:742 mkdir -p a/b 表示创建目录a,并创建目录a的子目录b, 若不使用命令-p的话,想要达到同样的效果,需要 ...

  9. 力扣 报错 runtime error: load of null pointer of type 'const int'

    runtime error: load of null pointer of type 'const int' 要求返回的是int* 解决方案 1.指针使用malloc分配空间 用 int * p = ...

  10. Android 虹软免费人脸识别 SDK开发

    目前我们的应用内使用了 ArcFace 的人脸检测功能,其他的我们并不了解,所以这里就和大家分享一下我们的集成过程和一些使用心得集成ArcFace FD 的集成过程非常简单在 ArcFace FD 的 ...