SpringBoot 日志系统
2020-12-13 04:41
标签:art 依赖关系 operation 关系 load factor tor image 依赖 开发一个大型系统的简易步骤: 写一个统一的接口层: 日志门面,(日志的一个抽象层) 给项目导入具体的日志实现,之前的框架都是实现的抽象层 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 日志门面(日志的抽象层): 日志实现: Log4j JUL(java.util.logging) Log4j2 Logback Springboot :底层是Spring框架,Spring 默认框架是JCL, 1 ,如何在 系统中使用SLF4J https://www.slf4j.org 在开发的时候,日志的记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象成里面的方法。 给系统导入slf4j 的jar ,和logback 的jar 每一个日志的实现框架都有自己的配置文件,使用slf4j 之后 ,配置文件还是做成日志实现框架自己的本身的配置文件。 开发的时候, A 系统: 可能会用到 (slf4j+logback): Spring(commons-logging默认)、Hibernate(默认:jboss-logging)、MyBatis、xxxx 如何统一 日志记录? 即使用别的框架,也统一使用 slf4j 进行输出 如何实现系统所有日志统一到slf4j : 如果使用IDEA ,那么idea 有个很好的工具可以让我们可视化的查看依赖关系,在pom.xml 中右键选择diagrams ---show dependencies 就可以查看 启动器: springboot 使用的日志功能组件: 底层依赖关系: 归纳: 如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉。 Spring框架用的是commons-logging; SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可 SpringBoot默认帮我们配置好了日志; SpringBoot修改日志的默认配置 指定配置: SpringBoot 日志系统 标签:art 依赖关系 operation 关系 load factor tor image 依赖 原文地址:https://www.cnblogs.com/thelovelybugfly/p/11117648.html日志框架
主流的日志框架
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging,SLF4J使用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
遗留问题:
springboot的日志关系
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starterartifactId>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-loggingartifactId>
dependency>
@SuppressWarnings("rawtypes")
public abstract class LogFactory {
static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j";
static LogFactory logFactory = new SLF4JLogFactory();
dependency>
groupId>org.springframeworkgroupId>
artifactId>spring-coreartifactId>
exclusions>
exclusion>
groupId>commons-logginggroupId>
artifactId>commons-loggingartifactId>
exclusion>
exclusions>
dependency>
SringBoot默认配置
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//System.out.println();
//日志的级别;
//由低到高 trace
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
-->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
logging.level.com.atguigu=trace
#logging.path=
# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
logging.path=/spring/log
# 在控制台输出的日志的格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中日志输出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n
logging.file
logging.path
Example
Description
(none)
(none)
只在控制台输出
指定文件名
(none)
my.log
输出日志到my.log文件
(none)
指定目录
/var/log
输出到指定目录的 spring.log 文件中
上一篇:关于百度API的使用方法
下一篇:.Net 内存泄露