SpringBoot配置log4j输出日志的案例讲解

作者:qq_25073223 时间:2023-07-30 18:54:50 

下文笔者讲述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

标签:SpringBoot,log4j,日志
0
投稿

猜你喜欢

  • java中两个byte数组实现合并的示例

    2021-10-16 20:26:48
  • Json字符串与Object、List、Map的互转工具类

    2023-04-30 16:08:16
  • java 在Jetty9中使用HttpSessionListener和Filter

    2021-10-01 14:44:00
  • IntelliJ IDEA(或者JetBrains PyCharm)中弹出"IntelliJ IDEA License Activation"的解决办法

    2021-12-11 09:39:10
  • C#用Activex实现Web客户端读取RFID功能的代码

    2021-10-28 21:07:36
  • C#与C++ dll之间传递字符串string wchar_t* char* IntPtr问题

    2022-09-16 09:34:53
  • Android利用AsyncTask异步类实现网页内容放大缩小

    2022-11-28 05:34:47
  • Android实现自定义圆形进度条

    2022-10-28 04:55:22
  • Unity3D制作序列帧动画的方法

    2022-07-04 05:45:33
  • Android adb命令中pm工具的作用及用法说明

    2022-05-27 23:38:42
  • Android UI动态设置带有Stroke渐变色背景Drawable

    2023-12-02 15:44:56
  • 一款域名监控小工具 Domain(IP)Watcher 实现代码

    2023-09-15 11:55:44
  • C#中?、?.、??、??=运算符的用法

    2022-11-10 18:11:51
  • SpringBoot整合WebService的实现示例

    2023-05-25 12:37:55
  • java读写oracle的blob字段示例

    2023-12-22 16:19:00
  • Java应用服务器之tomcat会话复制集群配置的示例详解

    2022-08-24 07:28:27
  • Vs2022环境下安装低版本.net framework的实现步骤

    2023-07-04 02:58:12
  • Android Studio使用教程(五):Gradle命令详解和导入第三方包

    2023-03-06 11:11:26
  • C#处理Paint事件的方法

    2022-01-12 02:02:51
  • Java类库BeanUtils组件使用方法及实例详解

    2022-09-28 00:37:49
  • asp之家 软件编程 m.aspxhome.com