背景

由于一些框架中还使用log4j-1.x系列陈旧的日志框架,调试过程中有一些错误信息不能在控制台显示,增加了调试成本。以下配置方法

将帮助你获得log4j-1.x日志在控制台显示。

解决方法:

使用logback充当门面模式,由他来适配底层日志框架。

logback-spring.xml(一定要用着名称)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>default</contextName>
 <springProperty scope="context" name="logLevel" source="logging.level.root"/>
    <springProperty scope="context" name="logPath" source="logging.path"/>
    <springProperty scope="context" name="applicationName" source="spring.application.name"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>${logLevel}</level>
</filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${applicationName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${logPath}/${applicationName}/${applicationName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>30GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <root level="${logLevel}">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>

application.yml/application.properties添加以下属性(不太喜欢yaml格式,因为臭名昭著的空格问题,常常让程序不能正常运行)

application.yml

spring:
application:
name: aiPlatform
logging:
level:
root: debug
path: C:\\xxx
xatu.zsl: debug
org.springfromework.web: debug

application.properties

spring.application.name=aiPlatform
logging.level.root=debug
logging.path: C:\\xxx

日志路径的配置

1、操作系统环境变量

当然logging.path也可以动态设定,比如取操作系统环境变量

logging.path: ${TEMP}
#相当于:System.getenv("TEMP")

2、JVM属性

经过笔者测试,你也可以设置JVM属性,作为日志路径,内部的表达式怎么评估出值,笔者没去深追代码

1、首先在启动类设置属性

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync; import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path; @EnableAsync
@EnableCaching
@CacheConfig
@EnableAutoConfiguration
@SpringBootApplication(exclude = {
xxxConfig.class
})
@ComponentScan
public class WebApplication{ public static void main(String[] args) throws IOException { ApplicationHome home = new ApplicationHome(WebApplication.class);
// returns the folder where the jar is. This is what I wanted.
File rootFolder = home.getDir();
//jar文件同级目录下识别logs目录绝对地址
Path logPath = rootFolder.toPath().resolve("logs").normalize().toAbsolutePath();
//jar文件父级目录logs文件夹路径
//Path logPath = rootFolder.toPath().getParent().resolve("logs").normalize().toAbsolutePath(); if(!Files.exists(logPath))
{
Files.createDirectories(logPath);
}
System.setProperty("logPath", logPath.toString()); SpringApplication.run(WebApplication.class, args);
}
}

application.yml日志配置路径如下:

logging:
level:
root: debug
path: ${logPath}

将springboot打包成jar,程序会在同级目录新建logs文件夹,如图,web-0.3.jar同级目录的logs文件夹

日志将记录到logs文件夹中

spring框架中已经不建议再使用log4j-1.x.jar日志框架,笔者该篇文章使用的是2.0.2.RELEASE,笔者曾经尝试更新到2.1.6,以上日志配置

logging.path=${logPath}
已经不再凑效,时间原因没去深追。

SpringBoot中日志配置的更多相关文章

  1. (二)Redis在Mac下的安装与SpringBoot中的配置

    1 下载Redis 官网下载,下载 stable 版本,稳定版本. 2 本地安装 解压:tar zxvf redis-6.0.1.tar.gz 移动到: sudo mv redis-6.0.1 /us ...

  2. Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

    什么是自定义Mybatis的配置规则? 答:即原来在mybatis配置文件中中我们配置到<settings>标签中的内容,如下第6-10行内容: 1 <?xml version=&q ...

  3. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

  4. django中日志配置

    # ======日志配置====== # 错误优先级:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL # Djang ...

  5. springboot中xml配置之@ImportResource

    springboot中进行相关的配置往往有java配置和xml配置两种方式. 使用java的方式配置只需要使用@configuration注解即可,而使用xml的方式配置的话需要使用@ImportRe ...

  6. springboot 中yml配置

    springboot 中各种配置项纪录 1. @Value 最早获取配置文件中的配置的时候,使用的就是这个注解,SpEL表达式语言. // 使用起来很简单 @Value("${config. ...

  7. 案例源码解读及思路:RabbitMQ在springboot中的配置

    程序员的高级之处不是什么都会,而是对自己不会的进行抽象,然后完成自己的工作.比如对于RabbitMQ,按照字面理解,就将其看成Message Queue,也就是用来容纳对象的集合.很多功能都拆分给一个 ...

  8. SpringBoot Logback 日志配置

    目录 前言 日志格式 日志输出 日志轮替 日志级别 日志分组 小结 前言 之前使用 SpringBoot 的时候,总是习惯于将日志框架切换为 Log4j2,可能是觉得比较靠谱,也可能年龄大了比较排斥新 ...

  9. springboot中logback配置

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

随机推荐

  1. Arthas使用指南

    Arthas 能为你做什么? 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在预发 de ...

  2. 洛谷 P4408 [NOI2003] 逃学的小孩 题解

    Analysis 题意虽然说先去谁家再去谁家,但是我们不需要管这个,因为AA.BB.CC三个点我们可以任意互相交换它们所代表的对象,所以题目要求的就是在一棵树上找到3个点AA.BB.CC令AB+BCA ...

  3. leetcode解题报告(24):Pascal's TriangleII

    描述 Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [ ...

  4. pytorch imagenet测试代码

    image_test.py import argparse import numpy as np import sys import os import csv from imagenet_test_ ...

  5. arts 打卡12周

    一 算法:  字符串转换整数 (atoi)   请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找 ...

  6. [面试]快来测测你的C++水平

    在32位编译环境下进行测试. 以下代码运行结果是什么? #include <iostream> using namespace std; class D { public: static ...

  7. LITEIDE配置

    LITEIDE配置 工具--管理GOPATH 工具--编辑当前环境

  8. Chrome 9229

    Enable Inspector When started with the --inspect switch, a Node.js process listens for a debugging c ...

  9. Unity制作王者荣耀商业级手游

    <王者荣耀>这种现象级手机游戏是如何制作出来的呢?本文以<王者荣耀>MOBO类型的多人在线战术竞技游戏为入口,覆盖Unity游戏制作开发前端与Node.js服务器端的开发必备知 ...

  10. NGUI: Next-Gen UI 2018.3.0f

    https://assetstore.unity.com/packages/tools/gui/ngui-next-gen-ui-2413 NGUI is a very powerful UI sys ...