SpringBoot配置log4j输出日志的案例讲解
作者:qq_25073223 发布时间:2023-07-30 18:54:50
标签:SpringBoot,log4j,日志
下文笔者讲述SpringBoot配置log4j的方法分享,如下所示
SpringBoot日志输出
springboot框架中默认使用logback进行日志输出
当然它也可以配置其它的日志框架
SpringBoot配置log4j
Springboot配置log4j的方法:
1.添加log4j.properties配置文件
2.初始化配置文件
配置log4j文件
添加log4j.properties配置文件
配置文件添加的路径
在工程src/main/resources下
文件内容
#log4j.rootLogger=CONSOLE,info,error,DEBUG
log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
#log4j.appender.info.File=/home/java265project/logs/info/api_services_info
log4j.appender.info.File=/Users/java265project/logs/info/api_services_info
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
#log4j.appender.error.File=/home/java265project/logs/error/api_services_error
log4j.appender.error.File=/Users/java265project/logs/error/api_services_error
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
#log4j.appender.DEBUG.File=/home/java265project/logs/debug/api_services_debug
log4j.appender.DEBUG.File=/Users/java265project/logs/debug/api_services_debug
### Debug
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
注意事项:
1.log4j.properties文件中
当部署线上环境,需要释放掉注释语句,并注释线下配置语句。
#log4j.appender.info.File=/home/java265project/logs/info/api_services_info
log4j.appender.info.File=/Users/java265project/logs/info/api_services_info
2.日志配置涉及三个级别:info、error、debug
例:
初始化log4j配置
springboot启动是通过main入口函数
需在main入口函数中设置log4j初始化
public class App {
private static final Logger logger = LoggerFactory.getLogger(App.class);
@Value("${server.port}")
private int port;
@Value("${server.sessionTimeout}")
private int sessionTimeout;
static {
try{
// 初始化log4j
String log4jPath = "";
if(Constant.LOG_MODE == 1){
// 配置线上地址
log4jPath = App.class.getClassLoader().getResource("").getPath()+"java265project/config/log4j.properties";
logger.info("Log4j线上生产模式初始化。。。");
}else{
// 配置本地地址
log4jPath = App.class.getClassLoader().getResource("").getPath()+"log4j.properties";
logger.info("Log4j线下开发模式初始化。。。");
}
logger.info("初始化Log4j。。。。");
logger.info("path is "+ log4jPath);
PropertyConfigurator.configure(log4jPath);
}catch (Exception e){
logger.error(e.toString());
}
}
public static void main(String[] args) {
final String[] temp = args;
logger.info("oops: main入口函数编码-" +System.getProperty("file.encoding"));
if(Constant.LOG_MODE == 0){
SpringApplication.run(App.class, args);
logger.info("oops: 线下开发测试");
}else{
logger.info("oops:" + args[0]);
}
if(ArrayUtils.isNotEmpty(args))
{
// 如果你的应用程序,运行后不自动退出,那么处理start时不要执行正常的代码,否则在部署测试 appctl.sh 的时候,会一直等待进程退出
if(args[0].equals("startup"))
{
new Thread(
new Runnable(){
public void run(){
System.out.println("启动Mythread子线程");
logger.info("启动Mythread子线程");
SpringApplication.run(App.class, temp);
}
}).start();
System.out.println("program startup");
logger.info("program startup");
}else if(args[0].equals("stop"))
{
System.out.println("program stop");
logger.info("program stop");
}else if(args[0].equals("restart"))
{
System.out.println("program restart");
logger.info("program restart");
}else if(args[0].equals("status"))
{
System.out.println("program status");
logger.info("program status");
}
}
}
优化配置
可对log4j.properties文件进行调整
使其配置更简单
log4j.rootLogger=${log.root}
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=${log.base}/java265project/logs/info/api_services_info
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=${log.base}/java265project/logs/error/api_services_error
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=${log.base}/java265project/logs/debug/api_services_debug
### Debug
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
与之相应的main函数新增如下代码,同时去掉static代码块:
System.setProperty("log.root",Constant.LOG_ROOT_DAILY);
System.setProperty("log.base",Constant.LOG_PATH_DAILY);
来源:https://blog.csdn.net/qq_25073223/article/details/127957911


猜你喜欢
- 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。深刻认识Stri
- 一、使用maven加载依赖加载了连接数据库的依赖、mybatis的依赖以及lombok的依赖<dependency>  
- 重新启动IDEA maven项目SSM框架所有@注解失效,每个文件上都有个小黄圆,而且我发现所有构建项目的maven的jar包都不在了,也就
- 1.配置代理系统管理---configure Global Security(全局安全设置)---Tcp port for inbound
- 这是个很简单的问题,但每次隔一段时间后使用起来总是会出点乱子。这里记录下Logcat的步骤:1,在Activity里申明tag变量(名字其实
- 单元测试是编写测试代码,应该准确、快速地保证程序基本模块的正确性。JUnit是Java单元测试框架,已经在Eclipse中默认安装。JUni
- //创建站点地图 private void Create
- 现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些
- 记录:276场景:利用Spring的机制发布ApplicationEvent和监听ApplicationEvent。版本:Spring Bo
- 前几天写了一篇《SpringBoot如何统一后端返回格式?老鸟们都是这样玩的!》阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,
- 本文实例为大家分享了ImageSwitcher图像切换器的实现代码,供大家参考,具体内容如下描述在该实例中,提供一个图片切换器和两个点击按钮
- 花了很长时间的实践,终于搞清楚了。类或者链表等,在指针赋值的时候,会使用新的指针。比如:Foo a = c;Foo b = new Foo(
- 前几天在“Android绘图之渐隐动画”一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下。
- 本文实例讲述了C#判断密码强度的方法。分享给大家供大家参考。具体如下:1.关于密码强度密码强度有强弱之分,包含数字、字母和其他符号三者且长度
- 本文实例讲述了C#统计C、C++及C#程序代码行数的方法。分享给大家供大家参考。具体如下:本文中的两个函数1)用于统计扩展名为 .h .c
- Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用sc
- 如果需要集合中的元素何时删除或添加的信息,可以使用ObservableCollection<T>类。这个类是为WPF定义的,这样
- 对于无.SVC文件的配置只需要指定以.svc结尾的相对地址和服务实现的完整名称即可。可问题恰恰出在这里,之前需要在<system.se
- 实现如下边框效果:虚线画效果,可以使用Android中的xml来做。下面话不多说,直接上代码:<RelativeLayout &nbs
- 在Thread中注入Bean无效在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务。而通过Spring注入