庄河做网站,网站建设服务合同 付款方式,为什么打开网址都是站长工具,浙江建设银行官方网站日志文件 一. 日志文件有什么用二. 日志怎么用三. ⾃定义⽇志打印1. 在程序中得到⽇志对象2. 使⽤⽇志对象打印⽇志3. ⽇志格式说明 四. 日志级别1. ⽇志级别有什么⽤2. ⽇志级别的分类与使⽤ 五. 日志持久化六. 更简单的⽇志输出—lombok1. 添加 lombok 依赖2. 输出⽇志3. lom… 日志文件 一. 日志文件有什么用二. 日志怎么用三. ⾃定义⽇志打印1. 在程序中得到⽇志对象2. 使⽤⽇志对象打印⽇志3. ⽇志格式说明 四. 日志级别1. ⽇志级别有什么⽤2. ⽇志级别的分类与使⽤ 五. 日志持久化六. 更简单的⽇志输出—lombok1. 添加 lombok 依赖2. 输出⽇志3. lombok 原理2. lombok 更多注解说明 一. 日志文件有什么用
最主要的⽤途就是排除和定位问题。除了发现和定位问题之外我们还可以通过⽇志实现以下功能记录⽤户登录⽇志⽅便分析⽤户是正常登录还是恶意破解⽤户。记录系统的操作⽇志⽅便数据恢复和定位操作⼈。记录程序的执⾏时间⽅便为以后优化程序提供数据⽀持。
二. 日志怎么用
Spring Boot 项⽬在启动的时候默认就有⽇志输出如下图所示 通过上述⽇志信息我们能发现以下 3 个问题
Spring Boot 内置了⽇志框架不然也输出不了⽇志。默认情况下输出的⽇志并⾮是开发者定义和打印的那开发者怎么在程序中⾃定义打印⽇志呢⽇志默认是打印在控制台上的⽽控制台的⽇志是不能被保存的那么怎么把⽇志永久的保存下来呢
三. ⾃定义⽇志打印
开发者⾃定义打印⽇志的实现步骤
在程序中得到⽇志对象。使⽤⽇志对象的相关语法输出要打印的内容。
1. 在程序中得到⽇志对象
在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory // 1.得到⽇志对象private static Logger logger LoggerFactory.getLogger(UserController.class); 注意
⽇志⼯⼚需要将每个类的类型传递进去这样我们才知道⽇志的归属类才能更⽅便、更直观的定位到问题类。Logger 对象是属于 org.slf4j 包下的不要导⼊错包。
因为 Spring Boot 中内置了⽇志框架 Slf4j所以咱们可以直接在程序中调⽤ slf4j 来输出⽇志。
常⻅的⽇志框架 2. 使⽤⽇志对象打印⽇志
⽇志对象的打印⽅法有很多种我们可以先使⽤ info() ⽅法来输出⽇志如下代码所示 // 2.使⽤⽇志打印⽇志logger.info(--------------要输出⽇志的内容----------------);3. ⽇志格式说明 四. 日志级别
1. ⽇志级别有什么⽤
⽇志级别可以帮你筛选出重要的信息⽐如设置⽇志级别为 error那么就可以只看程序的报错⽇志了对于普通的调试⽇志和业务⽇志就可以忽略了从⽽节省开发者信息筛选的时间。⽇志级别可以控制不同环境下⼀个程序是否需要打印⽇志如开发环境我们需要很详细的信息⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志⽽通过⽇志的级别就可以实现此需求。
2. ⽇志级别的分类与使⽤
trace微量少许的意思级别最低debug需要调试时候的关键信息打印info普通的打印信息默认⽇志级别warn警告不影响使⽤但需要注意的问题error错误信息级别较⾼的错误⽇志信息fatal致命的因为代码异常导致程序退出执⾏的事件。 级别越高接收到的消息就越少只能收到高于或者等于该级别的日志。如设置了 warn 就只能收到 warn、error、fatal 级别的⽇志了。
⽇志级别设置:
⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可如下所示
logging:level:root: error # 配置根路径的全局⽇志级别logging:level:com:example:controller: trace # 局部日志设置位置从 java 包开始且一般精准到包不会精准到类若同时出现全局和局部则以局部为准进行日志输出
RestController
RequestMapping(/user)
public class UserController {// 1.得到⽇志对象private static Logger logger LoggerFactory.getLogger(UserController.class);Value(${server.port})private String port;Value(${spring.datasource.url})private String url;RequestMapping(/sayhi)public String sayHi() {// 2.使⽤⽇志打印⽇志logger.trace( trace );logger.debug( debug );logger.info( info );logger.warn( warn );logger.error( error );return Hi, url;}
}⽇志的输出级别默认是 info.
五. 日志持久化
以上的⽇志都是输出在控制台上的然⽽在⽣产环境上咱们需要将⽇志保存下来以便出现问题之后追溯问题把⽇志保存下来的过程就叫做持久化。
想要将⽇志进⾏持久化只需要在配置⽂件中指定⽇志的存储⽬录或者是指定⽇志保存⽂件名之后Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了。
配置⽇志⽂件的保存路径
logging:file:path: D:\\DevelopTool\\JAVA #自动创建目录配置⽇志⽂件的⽂件名
logging:file:name: D:\\DevelopTool\\JAVA\\spring-1004.log # 文件存在则会续写不会覆盖 默认每个文件大小为 10MB, 大于 10MB 则分为多个文件可以自己设置存储结果 六. 更简单的⽇志输出—lombok
每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐使⽤ lombok 来更简单的输出。
添加 lombok 框架⽀持。使⽤ slf4j 注解输出⽇志。
1. 添加 lombok 依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/versionoptionaltrue/optional/dependency2. 输出⽇志
RestController
RequestMapping(/p)
Slf4j
public class PersonController {RequestMapping(/log)public void loggerTest() {log.error(------------------- error -----------------);}
}注意使⽤ Slf4j 注解在程序中使⽤ log 对象即可输⼊⽇志并且只能使⽤ log 对象才能输出这是 lombok 提供的对象名。
3. lombok 原理
lombok 能够打印⽇志的原理就在 target ⽬录⾥⾯target 为项⽬最终执⾏的代码查看 target ⽬录如下 可以发现 lombok 其实只是方便了我们编写并不会有什么性能的提升它的原理就是在编译前将注解替换为对应的代码。
Java 程序的运⾏原理 Lombok 的作⽤如下图所示 2. lombok 更多注解说明
基本注解
注解作⽤Getter⾃动添加 getter ⽅法Setter⾃动添加 setter ⽅法ToString⾃动添加 toString ⽅法EqualsAndHashCode⾃动添加 equals 和 hashCode ⽅法NoArgsConstructor⾃动添加⽆参构造⽅法AllArgsConstructor⾃动添加全属性构造⽅法顺序按照属性的定义顺序NonNull属性不能为 nullRequiredArgsConstructor⾃动添加必需属性的构造⽅法final NonNull 的属性为必需
组合注解
注解作⽤DataGetter Setter ToString EqualsAndHashCode RequiredArgsConstructor NoArgsConstructor
⽇志注解
注解作⽤Slf4j添加⼀个名为 log 的⽇志使⽤ slf4j
好啦 以上就是 SpringBoot ⽇志⽂件 的讲解希望能帮到你 评论区欢迎指正 !