当前位置: 首页 > news >正文

logback实践

1:日志区分环境

2:debug info  warn error日志文件不一样

3: 文件滚动日志 

4:启动可带参数  --spring.profiles.active=dev --log.level=info

5:可从配置文件中获取上下文参数

logback-spring.xml  放在 classpath 下面
 

<configuration scan="false" scanPeriod="30 seconds" debug="true"><springProperty scope="context" name="LOG_ROOT" source="log.path" defaultValue="/usr/log"/><springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="default"/><springProperty scope="context" name="LOG_LEVEL" source="log.level" defaultValue="INFO"/><!-- 设置日志格式 --><property name="LOG_PATTERN" value="[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger{0}.%M-%L] - %msg%n"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><target>System.out</target><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><file>${LOG_ROOT}/${APP_NAME}/debug.log</file><!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 指定滚动文件名称的生成规则 --><fileNamePattern>${LOG_ROOT}/${APP_NAME}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 超过最大磁盘限制后是否删除归档文件 --><cleanHistoryOnStart>true</cleanHistoryOnStart><!-- 单个日志文件大小 --><maxFileSize>20MB</maxFileSize><!--            <maxFileSize>1KB</maxFileSize>--><!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 --><totalSizeCap>1GB</totalSizeCap><!--            <totalSizeCap>10KB</totalSizeCap>--><!-- 保留的历史归档日志文件天数--><maxHistory>30</maxHistory></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger-%L] - %msg%n</pattern><charset>UTF-8</charset></encoder><file>${LOG_ROOT}/${APP_NAME}/info.log</file><!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 指定滚动文件名称的生成规则 --><fileNamePattern>${LOG_ROOT}/${APP_NAME}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 超过最大磁盘限制后是否删除归档文件 --><cleanHistoryOnStart>true</cleanHistoryOnStart><!-- 单个日志文件大小 --><maxFileSize>20MB</maxFileSize><!--            <maxFileSize>1KB</maxFileSize>--><!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 --><totalSizeCap>1GB</totalSizeCap><!--            <totalSizeCap>10KB</totalSizeCap>--><!-- 保留的历史归档日志文件天数--><maxHistory>30</maxHistory></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger-%L] - %msg%n</pattern><charset>UTF-8</charset></encoder><file>${LOG_ROOT}/${APP_NAME}/warn.log</file><!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 指定滚动文件名称的生成规则 --><fileNamePattern>${LOG_ROOT}/${APP_NAME}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 超过最大磁盘限制后是否删除归档文件 --><cleanHistoryOnStart>true</cleanHistoryOnStart><!-- 单个日志文件大小 --><maxFileSize>20MB</maxFileSize><!--            <maxFileSize>1KB</maxFileSize>--><!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 --><totalSizeCap>1GB</totalSizeCap><!--            <totalSizeCap>10KB</totalSizeCap>--><!-- 保留的历史归档日志文件天数--><maxHistory>30</maxHistory></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><file>${LOG_ROOT}/${APP_NAME}/error.log</file><!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 指定滚动文件名称的生成规则 --><fileNamePattern>${LOG_ROOT}/${APP_NAME}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern><!-- 超过最大磁盘限制后是否删除归档文件 --><cleanHistoryOnStart>true</cleanHistoryOnStart><!-- 单个日志文件大小 --><maxFileSize>20MB</maxFileSize><!--            <maxFileSize>1KB</maxFileSize>--><!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 --><totalSizeCap>1GB</totalSizeCap><!--            <totalSizeCap>10KB</totalSizeCap>--><!-- 保留的历史归档日志文件天数--><maxHistory>30</maxHistory></rollingPolicy><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter></appender><!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  --><springProfile name="txtest,txprod,prod,test"><root level="${LOG_LEVEL}"><!--日志输出到文件--><appender-ref ref="debug"/><appender-ref ref="info"/><appender-ref ref="warn"/><appender-ref ref="error"/></root></springProfile><!-- 本地、开发环境,日志配置 可以写logback支持的所有节点 --><springProfile name="local,dev"><root level="${LOG_LEVEL}"><!--控制台日志:生产环境建议关掉--><appender-ref ref="STDOUT"/><appender-ref ref="debug"/><appender-ref ref="info"/><appender-ref ref="warn"/><appender-ref ref="error"/></root><!--    一般dao操作被项目封装可以设置项目上的封装路径--><logger name="com.ikeeper.mapper.base" level="debug"/></springProfile><!--打印SQL--><!--    <logger name="java.sql.Connection" level="DEBUG"/>--><!--    <logger name="java.sql.Statement" level="DEBUG"/>--><!--    <logger name="java.sql.PreparedStatement" level="DEBUG"/>--><!--    一般dao操作被项目封装可以设置项目上的封装路径--><!--    <logger name="com.ikeeper.mapper.base" level="debug"/>--></configuration>

相关文章:

logback实践

1:日志区分环境 2:debug info warn error日志文件不一样 3: 文件滚动日志 4:启动可带参数 --spring.profiles.activedev --log.levelinfo 5:可从配置文件中获取上下文参数 logback-spring.xml 放在 classpath 下面 <configuration scan"false" scanPer…...

深入理解java虚拟机---自动内存管理

2.2 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是依赖用户线程的启动和结束而建立和销…...

粉笔规范词积累(文化发展)

活态保护/活态传承 基本释义 是在文化遗产生成发展的环境当中进行保护和传承&#xff0c;在人民群众生产生活过程中进行传承与发展。 应用场景 当资料中出现“让文化遗产不仅‘活’在历史中&#xff0c;更‘活’在人们的生产生活中”等类似表述&#xff0c;可概括为“活态保…...

如何在Ubuntu部署Emlog,并将本地博客发布至公网可远程访问

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…...

Axios

Axios简介 axios框架全称&#xff08;ajax – I/O – system&#xff09;&#xff1a; 基于promise用于浏览器和node.js的http客户端&#xff0c;因此可以使用Promise API 一、axios是干啥的 说到axios我们就不得不说下Ajax。在旧浏览器页面在向服务器请求数据时&#xff0…...

数据仓库选型建议

1 数仓分层 1.1 数仓分层的意义 **数据复用&#xff0c;减少重复开发&#xff1a;**规范数据分层&#xff0c;开发一些通用的中间层数据&#xff0c;能够减少极大的重复计算。数据的逐层加工原则&#xff0c;下层包含了上层数据加工所需要的全量数据&#xff0c;这样的加工方…...

每日一题——LeetCode1470.重新排列数组

方法一 把数组的前n项看做一个数组&#xff0c;后n项看做一个数组&#xff0c;两个数组循环先后往res里push元素 var shuffle function(nums, n) {let res[]for(let i0;i<n;i){res.push(nums[i])res.push(nums[in])}return res }; 消耗时间和内存情况&#xff1a; 方法二…...

网络安全--网鼎杯2018漏洞复现(二次注入)

一、环境&#xff1a;在线测试平台 BUUCTF在线评测 (buuoj.cn) 二、进入界面先尝试万能账号 1or11# 换格式 hais1bux1 11or11# 三、万能的不行那我们就得想注册了&#xff0c;去register.php去看看 注册个账号 发现用户名回显&#xff0c;猜测考点为用户名处二次注入&…...

CSS篇--transform

CSS篇–transform 使用transform属性实现元素的位移、旋转、缩放等效果 位移 // 语法 transform:translate(水平移动距离&#xff0c;垂直移动距离) translate() 如果只给一个值&#xff0c;表示x轴方法移动距离 单独设置某个方向的移动距离&#xff1a;translateX() transla…...

阿里云国际-在阿里云服务器上快速搭建幻兽帕鲁多人服务器

幻兽帕鲁是最近流行的新型生存游戏。该游戏一夜之间变得极为流行&#xff0c;同时在线玩家数量达到了200万。然而&#xff0c;幻兽帕鲁的服务器难以应对大量玩家的压力。为解决这一问题&#xff0c;幻兽帕鲁允许玩家建立专用服务器&#xff0c;其提供以下优势&#xff1a; &am…...

vite 快速搭建 Vue3.0项目

一、初始化项目 npm create vite-app <project name>二、进入项目目录 cd ……三、安装依赖 npm install四、启动项目 npm run dev五、配置项目 安装 typescript npm add typescript -D初始化 tsconfig.json //执行命令 初始化 tsconfig.json npx tsc --init …...

深入理解Python爬虫的Response对象

源码分享 https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2 在构建Python爬虫时&#xff0c;理解HTTP响应&#xff08;Response&#xff09;是至关重要的。本篇博客将详细介绍如何使用Python的Requests库来处理HTTP响应&#xff0c;并通过详细的代码案例指导你如何提取…...

centos7下docker的安装

背景 总结下docker的一些知识 docker安装&#xff08;有网络版&#xff09; 参考文章我以前试过这个帖子&#xff0c;建议安装高版本的docker&#xff0c;&#xff08;20以上的&#xff0c;不然可能会有一些问题&#xff09; ## 1、安装依赖 [rootiZo7e61fz42ik0Z ~]#yum i…...

Excel SUMPRODUCT函数用法(乘积求和,分组排序)

SUMPRODUCT函数是Excel中功能比较强大的一个函数&#xff0c;可以实现sum,count等函数的功能&#xff0c;也可以实现一些基础函数无法直接实现的功能&#xff0c;常用来进行分类汇总&#xff0c;分组排序等 SUMPRODUCT 函数基础 SUMPRODUCT函数先计算多个数组的元素之间的乘积…...

C#上位机与三菱PLC的通信08---开发自己的通讯库(A-1E版)

1、A-1E报文回顾 具体细节请看&#xff1a; C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析 C#上位机与三菱PLC的通信04--MC协议之A-1E报文测试 2、为何要开发自己的通讯库 前面使用了第3方的通讯库实现了与三菱PLC的通讯&#xff0c;实现了数据的读写&#xff0c;对于通…...

ABAQUS应用04——集中质量的添加方法

文章目录 0. 背景1. 集中质量的编辑2. 约束的设置3. 总结 0. 背景 混塔ABAQUS模型中&#xff0c;机头、法兰等集中质量的设置是模型建立过程中的一部分&#xff0c;需要研究集中质量的添加。 1. 集中质量的编辑 集中质量本身的编辑没什么难度&#xff0c;我已经用Python代码…...

[嵌入式系统-24]:RT-Thread -11- 内核组件编程接口 - 网络组件 - TCP/UDP Socket编程

目录 一、RT-Thread网络组件 1.1 概述 1.2 RT-Thread支持的网络协议栈 1.3 RT-Thread如何选择不同的网络协议栈 二、Socket编程 2.1 概述 2.2 UDP socket编程 2.3 TCP socket编程 2.4 TCP socket收发数据 一、RT-Thread网络组件 1.1 概述 RT-Thread 是一个开源的嵌入…...

【ansible】认识ansible,了解常用的模块

目录 一、ansible是什么&#xff1f; 二、ansible的特点&#xff1f; 三、ansible与其他运维工具的对比 四、ansible的环境部署 第一步&#xff1a;配置主机清单 第二步&#xff1a;完成密钥对免密登录 五、ansible基于命令行完成常用的模块学习 模块1&#xff1a;comma…...

【LeetCode】升级打怪之路 Day 01:二分法

今日题目&#xff1a; 704. 二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置 目录 今日总结Problem 1: 二分法LeetCode 704. 二分查找 【easy】LeetCode 35. 搜索插入位置 ⭐⭐⭐⭐⭐LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 【medi…...

单片机stm32智能鱼缸

随着我国经济的快速发展而给人们带来了富足的生活&#xff0c;也有越来越多的人们开始养鱼&#xff0c;通过养各种鱼类来美化居住环境和缓解压力。但是在鱼类饲养过程中&#xff0c;常常由于鱼类对水质、水位及光照强度有着很高的要求&#xff0c;而人们也由于工作的方面而无法…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...