SpringBoot与日志,指定目录路径存放日志

记一次Oracle归档日志异常增长问题的排查过程 Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(Redo Log)保存到归档日志文件(Archive Log)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。当数据库处于归档模式时,数据库引擎会将已经写满的重做日志文件保存到归档日志文件中,而不是覆盖已有的重做日志。这样可以确保数据库的完整性,并且可以使用归档日志文件进行数据库的恢复操作。归档日志对于数据库的备份和恢复非常重要。 阅读详情

简介

    SpringBoot的日志部分,日志选择,日志框架切换

日志框架的选择

    选用SLF4j和logback

历史遗留

    如果之前有部分系统使用的不是SLF4j,那如何让系统中所有的日志都统一到SLF4j?官方说:
1.    将系统中其他日志框架先排除出去
2.    用中间包替换掉原有的日志框架
3.    导入SLF4j其它的实现

    那在SpringBoot中它是咋做的?都有什么依赖?看下图快捷调出视图依赖在这里插入图片描述
    找到starter下关于日志的依赖关系,知道了SpringBoot搞了这几个jar做日志,看名字,log4j-toslf4j什么的,意思是说把log4j他们都替换成slf4j,与slf4j官方思想一致,关于细节,请自行查源码
在这里插入图片描述
    SpringBoot能自动适配所有日志,而且底层使用slf4j+logback的方式记录日志

默认配置

    SpringBoot默认已经配置好日志了

    注意一下,这里的LoggerFactory是sfl4j的

Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    void contextLoads1() {
        //日志的级别从低到高
        logger.trace("这是trace日志。。。");
        logger.debug("这是dubug日志。。。");
        logger.info("这是info日志。。。");
        logger.warn("这是warn日志。。。");
        logger.error("这是error日志");


    }
2020-09-07 15:37:50.449  INFO 15296 --- [           main] h.demo.DemoApplicationTests              : 这是info日志。。。
2020-09-07 15:37:50.449  WARN 15296 --- [           main] h.demo.DemoApplicationTests              : 这是warn日志。。。
2020-09-07 15:37:50.450 ERROR 15296 --- [           main] h.demo.DemoApplicationTests              : 这是error日志

    可以看到默认级别是从info到error,不过可以在yml里改默认配置,要给个map
在这里插入图片描述

logging:
  level:
    hellospringboot.demo : trace
2020-09-07 15:54:44.695 TRACE 16324 --- [           main] h.demo.DemoApplicationTests              : 这是trace日志。。。
2020-09-07 15:54:44.696 DEBUG 16324 --- [           main] h.demo.DemoApplicationTests              : 这是dubug日志。。。
2020-09-07 15:54:44.696  INFO 16324 --- [           main] h.demo.DemoApplicationTests              : 这是info日志。。。
2020-09-07 15:54:44.696  WARN 16324 --- [           main] h.demo.DemoApplicationTests              : 这是warn日志。。。
2020-09-07 15:54:44.696 ERROR 16324 --- [           main] h.demo.DemoApplicationTests              : 这是error日志

在当前项目下生成日志文件

logging:
  level:
    hellospringboot.demo : trace
  #  在当前项目下生成日志文件
  file:
    name: hello.log

日志文件

在指定路径下生成日志

logging:
  level:
    hellospringboot.demo : trace
  file:
    path: D:/spring/log

日志路径

在控制台输出日志的格式

指定文件中日志输出的格式

这些东西比较全的贴在下边了,可对照功能去搞一搞

<?xml version="1.0" encoding="UTF-8"?>
<!--
scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
    <!-- 定义日志的根目录 -->
    <property name="LOG_HOME" value="/app/log" />
    <!-- 定义日志文件名称 -->
    <property name="appName" value="test-springboot"></property>
    <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--
        日志输出格式:
			%d表示日期时间,
			%thread表示线程名,
			%-5level:级别从左显示5个字符宽度
			%logger{50} 表示logger名字最长50个字符,否则按照句点分割。 
			%msg:日志消息,
			%n是换行符
        -->
        <layout class="ch.qos.logback.classic.PatternLayout">
		<!--如果把xml名字带上spring->logback-spring.xml,就可以使用spring的高级功能,设置什么环境用什么格式-->
			<!--
			<springProfile name="dev">
				<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}----》[%thread] %-5level %logger{50} - %msg%n</pattern>
			</springProfile>
			<springProfile name="!dev">
				<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}====[%thread] %-5level %logger{50} - %msg%n</pattern>
			</springProfile>
			-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->  
    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 指定日志文件的名称 -->
        <file>${LOG_HOME}/${appName}.log</file>
        <!--
        当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
        TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--
            滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 
            %i:当文件大小超过maxFileSize时,按照i进行文件滚动
            -->
            <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!-- 
            可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
            且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
            那些为了归档而创建的目录也会被删除。
            -->
            <MaxHistory>365</MaxHistory>
            <!-- 
            当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
            -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 日志输出格式: -->     
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 
		logger主要用于存放日志对象,也可以定义日志类型、级别
		name:表示匹配的logger类型前缀,也就是包的前半部分
		level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
		additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
		false:表示只用当前logger的appender-ref,true:
		表示当前logger的appender-ref和rootLogger的appender-ref都有效
    -->
    <!-- hibernate logger -->
    <logger name="com.test" level="debug" />
    <!-- Spring framework logger -->
    <logger name="org.springframework" level="debug" additivity="false"></logger>



    <!-- 
    root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
    要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 
    -->
    <root level="info">
        <appender-ref ref="stdout" />
        <appender-ref ref="appLogAppender" />
    </root>
</configuration> 

    另外,可以根据下图去看SpringBoot日志的默认配置
在这里插入图片描述

以后若有遇到更实际的功能,再回来补充

Spring Boot配置保存日志文件 springboot日志配置:springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。 阅读详情

相关推荐

SpringBoot 09——Spring Boot日志配置

Spring Boot 采用了 slf4j+logback 的组合形式,Spring Boot也提供对JUL、log4j2、Logback提供了默认配置 1、默认日志配置              修改日志默认级别        2、修改日志默认配置       修改日志文件生成路径                     修改日志输出格式          3、日志底层实...

菜园子丶For丨丶Tomorrow的博客 8101

ORACLE 10G版本数据库系统产生大量归档日志问题的分析

ORACLE 11Gr2开始,数据库AWR中的segment部分的block change小节,可以显示块变更多的表或索引信息,依据此信息结合TOP SQL部分,可以很快速的确定导致产生很多归档日志的SQL语句、程序模块信息等。,当日采样人员过多,超过上限导致程序混乱,产生大量update,导致归档暴增,应用采取加模组方式暂时解决,后续修改采样编码上限。导致,正常的SQL在出现异常执行时,也会产生问题,出现大量的归档,应该对SQL执行次数进行监控,出现异常执行次数时, 立即处理。秒取样时间内,sql。

还不算晕的专栏 3911

【SpringBoot】53、根据日期、文件大小分类存放日志文件

一、问题描述 一般我们在启动 SpringBoot 的 jar 包的时候,默认会将日志记录输出到 nohup.out 文件中,当系统长时间启动后,累积的日志文件是非常庞大的,非常不利于我们查看日志。 二、希望达到的目的 我们在面对庞大的日志文件时,更希望每天的日志存放与单独的文件夹中,并根据日志文件大小分开存放,在系统出现异常问题时,我们才能更快地去查询日志记录,定位问题,从而解决问题。 三、解决方法 1、引入依赖 <!-- lombok插件 --> <dependency>

JACKAL 20万+

生产案例:突然产生大量的归档日志,导致磁盘空间满了无法登陆数据库

早上吃完早饭打开电脑,突然告知数据库无法登陆,马上打开终端连接数据库,报如下错误 sqlplus / as sysdba ERROR: ORA-09817: Write to audit file failed. SVR4 Error: 28: No space left on device ORA-01075: you are currently logged on 很明显几个单词NO SPACE,赶忙看系统df -h 果然100%没了,第一反应,是归档日志占满了空间,数据库不会增长那么快,所以到归

qq_45678201的博客 1642

Oracle归档日志写满(ora-00257)了怎么办

今天在使用oracle数据库做项目时,突然报错:ORA-00257: archiver error. Connect internal only, until freed,该问题如何解决呢?经过本人一番折腾此问题还要归档于日志满了,下面小编把Oracle归档日志写满(ora-00257)的解决办法在此分享给大家供大家参考

MAIXCAM无线连接实战:5分钟搞定远程调试与代码烧录(避坑版)

本文提供了一份详细的MAIXCAM无线连接实战指南,帮助嵌入式视觉开发者快速配置远程调试与代码烧录。文章重点介绍了通过MaixHub IDE进行Wi-Fi配置、建立远程终端连接、使用SFTP进行文件传输以及管理自启动应用程序的完整流程,并针对IP地址变动、信号中断等常见问题提供了实用的避坑解决方案,旨在提升开发效率与灵活性。

weixin_29188043的博客 299

SpringBoot 日志文件

日志文件

chenchenchencl的博客 3389

完整IC设计流程解析&Makefile学习

本文介绍了decorder38项目的文件结构、自动化综合流程和Makefile使用方法。项目包含RTL到GDSII全流程文件,重点关注syn目录中的综合脚本。通过make dc命令运行综合流程,生成网表、约束和时序文件。关键报告如qor.rpt、area.rpt和min_vio.rpt用于分析综合质量、面积和时序。Makefile部分解释了其基本语法、IC设计中的典型结构,包括目标定义、命令执行和特殊声明,强调了其在自动化构建和依赖管理中的重要性。

m0_63352623的博客 855

java sl4j 指定目录_Springboot项目使用Slf4j将日志保存到本地目录的实现代码

1.引入jar包org.slf4jslf4j-api1.7.252.编写application.properties/yml#.propertieslogging.config= classpath:logback-spring.xmllogging.file= #存放路径#.ymllogging:config: classpath:logback-spring.xmlfile: #存放路径3.编...

weixin_36155754的博客 1427

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

保姆级教程:用NVIDIA Jetson AGX Xavier和GMSL2相机搭建8路车载视觉原型系统

本文提供了一份详细的教程,指导如何使用NVIDIA Jetson AGX Xavier开发板和GMSL2相机搭建8路车载视觉原型系统。内容涵盖硬件选型、系统架构设计、软件环境配置、多路视频采集实现以及性能优化与问题排查,帮助开发者快速掌握GMSL2技术在车载视觉系统中的应用。

weixin_42525005的博客 295

【整理】SpringBoot默认的各种路径(如静态资源路径,配置文件路径等)

SpringBoot默认路径 为什么会想到整理这个,我见过很多人包括经验老道的程序员,特别是萌新,都会经常头疼哪些路径是SpringBoot默认能识别到的,哪些路径又是需要开发者自行去进行相应配置的。于是乎就开始搜google,baidu来查答案,有些能查到还好,有一些可能因为关键字不合适而耗费大量时间进行甄别。 因此就有了这一篇简短的文章,来帮助大家整理SpringBoot的默认路径 (一)...

qq_29765371的博客 1万+

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

SpringBoot默认的各种路径

SpringBoot默认路径 (一)静态资源 传统的Java Web项目,一般是新建一个WebContent目录,然后所有页面,js等静态资源都放在里面。但是在SpringBoot的规范里,不需要这么做 /src/main/resource/static/ 一般用于存放静态资源(css,js,image等) /src/main/resource/public/ 一般用于存放页面 /src/main/resource/templates/ 用于存放页面,一般是thyleleaf、FreeMaker、

z132411的博客 1976

【操作系统】Hello CTF-专为CTF比赛封装的虚拟机 Beta版

很多师傅在学习与研究CTF的道路上,总是碰到想提升自我水平,但缺少本地化的训练环境以及安装各类软件的烦恼现象;因此拥有一些趁手“武器”,干起活来将会事半功倍。CTFos是探姬(ProbiusOfficial)专为CTF比赛封装的虚拟机,基于工具集封装多个版本和系统。CTF入门选手各行业网络/信息从业人员安全相关工作人员但不想在工作机上安装CTF一些奇葩的软件…该系统是通过虚拟机封装的,需要使用打开!一个专为CTF比赛封装的虚拟机,开箱即用。

qq_47493625的博客 1万+

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1298

在Spring的项目中配置Log4j存放日志文件到指定目录下

在Spring中使用LOG4J为日志输出的插件已有一段日子了,但有时候发现日志文件虽然是已经在根据自己的理想存放了,但还会有些莫名其妙的项目日志文件出现tomcat内(因为项目的日志文件都以项目命名嘛,所以比较容易区分这些log)。这些令我纠结的日志文件,让我在改善一下LOG4J的配置。才发现,之前用的配置方式真是弱爆了。   1.先说自己比较理想的存放日志路径。 我比较喜欢把日志文件放在项

zhll3377的专栏 1万+

AFSim 2.9中文手册实战指南:从安装到高级功能详解(附B站视频链接)

本文详细介绍了AFSim 2.9的安装配置、基础功能操作和高级功能应用,帮助用户快速掌握这款强大的仿真平台。从系统要求检查到多体动力学仿真,再到性能优化技巧,全面解析AFSim 2.9的使用方法,适合初学者和进阶用户参考。

weixin_30892037的博客 568

SpringBoot—日志

首先先要将sprinBootd的默认日志框架关闭,将log4j2框架导入。实现了日志的分割和归档并且按照日志级别将不同级别的日志放在不容的文件中。配合上面的xml配置文件就会将输出的日志文件存放在指定的目录中。可能会遇到给不同包设置级别,一个一个设置太麻烦,所以进行分组。WARN:警告但不是错误的信息日志,比如:版本过时。TRACE:追踪框架详细流程日志,一般不使用。FATAL:致命错误日志,比如jvm系统崩溃。ERROR:业务错误日志,比如出现各种异常。只会打印指定级别以上级别的日志信息。

TCDHanyongpeng的博客 562

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在SpringBoot项目中优雅地记录日志(日志框架选型、SpringBoot默认的日志实现框架、如何使用日志框架、如何切换日志的具体实现框架、与日志相关的配置、记录日志的最佳实践)

在SpringBoot项目优雅地地记录日志(日志框架选型、SpringBoot默认的日志实现框架、如何使用日志框架、如何切换日志的具体实现框架、与日志相关的配置、记录日志的最佳实践)

聂可以的博客 7486

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

springboot 动态指定日志路径(logback) 自动跟随项目路径

背景 项目(jar项目)开发时,日志文件输出路径配置的为相对路径(与项目src是同一个目录): 问题 (希望日志跟随jar文件目录生成) 在项目部署(cmd 直接运行jar文件)时,如果在jar文件下启动,日志输出路径没有问题(与jar同一文件夹),但使用全路径启动时,log文件夹则生成在运行命令的所在盘符中(如:路径在C盘下,启动在E盘下的jar,log日志则在C盘中): 解决 办法一 使用配置文件,配置输出路径,参考: SpringBoot项目在logback.xml中读取配置中的日志路径问题 这种办

wang_rk的博客 8730

springboot 日志配置

1、在application.yml配置文件中增加:logging.path 或者 logging.file 注意:它们不会同时生效,只配置其中一个就好了。若同时指定logging.path和logging.file,则logging.path不会生效,只会按照logging.file生成 例如: logging.path = ./logs logging.file,只指定文件名,会生成在当前总项目目录下;同时指定目录和文件名,会在指定目录下生成指定文件名的日志文件(相对路径,则会生成在当前总项.

csdnzhang365的博客 6996

logback 配置相对路径_SpringBoot中如何使用logback日志框架

对于Java来说,现在有很多的日志实现,像commons-logging、log4j、log4j2、logback等,这些都是比较主流的日志实现。SpringBoot对上述主流的日志实现都做了很好的支持,这样以来我们在使用日志框架时就显得有些困惑了,怎么样选择日志框架,才是最优配置。 其实最优配置是相对的,不过我们可以根据SpringBoot“约定优于配置”的理念作为指导,来选择适合自己的日志框架...

weixin_39989875的博客 2538

springboot日志记录操作

1、springboot使用的是sel4j(抽象类)日志框架,具体是由logback来实现 使用方式如下 Logger logger = LoggerFactory.getLogger(getClass()); logger.trace("……"); logger.debug("……"); logger.info("……"); logger.warn("……"); logger.error("……...

weixin_40404189的博客 794

Springboot + slf4j日志

slf4j springboot推荐的日志类库是slf4j、日志系统为logback。slf4j有个接口叫Logger,提供了丰富的日志输出方法,包含了所有日志级别的输出。使用方式也是特别的简单,用slf4j的工厂类获取一个logger ,然后就可以输出日志了,默认情况下,日志只会输出到控制台。 使用 package cn.com.infosec.netseal.common.core.controller; import org.slf4j.Logger; import org.slf4j.Logger

qq_42873640的博客 2494
上一篇: SpringBoot之配置、多环境yml配置、切换环境、自动配置原理
下一篇: jQuery$失效、冲突及解决,改用自定义访问符
献 丑
博客等级 码龄8年 10粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值