logback(logback 日志打印 怎么实现换行)
本文目录
- logback 日志打印 怎么实现换行
- SpringBoot日志logback配置
- logback日志配置获取服务器名称/ip/pid/端口
- logback需要配置哪些东西
- logback配置文件详解
- logback 异步日志配置
- LogBack日志
- 怎么将logback的日志信息异步到oracle数据库
logback 日志打印 怎么实现换行
logback类似于log日志体系,可以将一些日志信息输出到tomcat文件夹内,示例如下: logback.xml里面的内容配置:UTF-8${logbase}%d{yyyy-MM-dd}.log.html${logbase}.%d{yyyy-MM-dd}.log.html.zip使用的时候可以这样定义变量:Logger logger = Lo...
SpringBoot日志logback配置
在前一个项目simple-boot-demo项目中配置日志相关。
SpringBoot日志依赖为: spring-boot-starter-logging ,不过对于web项目,已经引入了 spring-boot-starter-web ,默认已经自带了日志的 spring-boot-starter-logging ,已经默认引入了 logback 实现,只需要配置application.yml即可。
Spring内部使用 Commons Logging ,SpringBoot项目日志实现可以用log4j2,logback,JDK (Java Util Logging)等。
参考文档:
***隐藏网址***
***隐藏网址***
level是个map,配置不同的日志名称的级别,一般情况下都是配置些包名称就可以了,因为一般都是用类名作为日志名称,常见写法如下:
默认配置下只会在控制台输出日志,没有文件日志,可以配置文件名来控制文件输出。
日志文件配置:
日志配置示例:
另外一些文件日志配置如下,主要配置文件大小分隔、历史记录、输出格式等,这些配置在IDE中都有提示输入:
注意:这些配置在使用自定义的配置文件 logging.config=classpath:logback-spring.xml 时,如果include引入sping-boot项目中的logback配置xml片段,这些application.yml中的配置也是有效的,而且level配置还是优先于配置文件
日志可以分组配置,针对部分日志名称定义一个分组,可以统一配置此分组的级别:
SpringBoot内置的日志分组:
SpringBoot如果要使用自定义的logback作为日志实现,需要编写logback.xml,但是引入logback之后,logback会自动查找logback.xml,因此不能把名字定义为logback.xml,否则可能早于SpringBoot初始化,造成一些配置无效问题。
使用 logback-spring.xml 或者使用 loging.config 来指定配置文件(默认名字为 logback-spring.xml 的文件springboot会自动获取到,自定义名字需要手动配置):
在spring-boot项目的jar包中,spring为了简化配置,已经在项目中内置了一些logback的配置片段,方便使用include方式引入,打开可以看到内容是用 《included》《/include》 包裹,因此自定义配置文件 logback.xml 的时候直接include即可。
配置片段路径: org/springframework/boot/logging/logback/
典型 logback.xml 配置文件如下,其中引用了spring-boot提供的xml片段:
上面的配置是文件取名为 demo-logback.xml ,方便引入。
配置application.yml:
logback日志配置获取服务器名称/ip/pid/端口
***隐藏网址*** 2、创建一个类继承自ch.qos.logback.classic.pattern.ClassicConverter,重写方法: 3、在logback-spring.xml文件里加入配置获取ip类 4、具体使用: ***隐藏网址***
logback需要配置哪些东西
logback是log4j作者推出的新日志系统,原生支持slf4j通用日志api,允许平滑切换日志系统,并且对简化应用部署中日志处理的工作做了有益的封装。Logback日志需要依赖一下jar包:slf4j-api-1.6.0.jarlogback-core-0.9.21.jarlogback-classic-0.9.21.jarlogback-access-0.9.21.jar 主配置文件为logback.xml,放在src目录下或是WEB-INF/classes下,logback会自动加载logback.xml的基本结构如下: view plaincopy 《?xml version="1.0" encoding="UTF-8"?》 《configuration》 《appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"》 《encoder》 《pattern》%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n《/pattern》 《/encoder》 《/appender》 《root level="DEBUG"》《appender-ref ref="STDOUT" /》《/root》 《/configuration》 转载,仅供参考。
logback配置文件详解
logback日志框架由三部分组成: logback-core 、 logback-access 、 logback-classic 。使用起来也很方便需要在项目目录下增加logback.xml文件。在springboot项目,框架已经集成了logback(默认的日志框架),只需要在项目 resource 下配置 logback.xml文件 或者 logback-spring.xml 文件。这里主要记录的是logback配置文件的内容部分。
在学习logback时,我们需要了解设计者的思维方式。我们才能更好的配置出我们需要的日志策略及性能。
(1)控制台日志和写入文件日志分开 日志本身是可追加写入的,定义为 追加器 : appender ,控制台和写入文件日志分别有 ConsleAppdender 和 FileAppender 两个追加器处理。
(2)日志打印的内容可以控制参数格式 打印出的日志一定是规整的,便于开发跟踪问题。例如:问题发生的时间,由于大部分程序都是多线程运行的,则需要知道每个业务请求的线程号,出问题的使用到的类名等等.
(3)写入文件中的日志不宜过大同时考虑时间跨天问题 考虑到将文件分开(可卷起 Rolling ),则使用升级的追加器 RollingFileAppender ,同时分开规则( Policy )考虑到跨天跨时间 。则在追加器中定义拆分规则: SizeAndTimeBasedRollingPolicy
(4)日志应该可以灵活指定输出级别 针对“ com.sports ”包下的日志,控制台和日志文件都使用debug级别。
(5)必须对主体日志指定输出级别 虽然我们会对不同的包或者框架下日志设置输出级别,但不可缺少主体日志输出级别: root
(6)日志可以异步写入 通常日志是和业务应用公用同一个线程,写系统日志会有 IO 开销,会损耗性能,我们应该可以异步写日志
logback框架日志格式通过 PatternLayout 方式配置,样例:
encoder作用:①把日志信息转换成字节数组;②把字节数组写入到输出流。 PatternLayoutEncoder 是唯一有用的且默认的 encoder , encoder 下只有一个 pattern 节点。
(1) % + “转换符号”输出信息 %t : t表示线程的转换符,打印控制台" " pattern中的转换符列表
(2)格式修饰符 与转换符共同使用,可选的格式修饰符位于“%”和转换符之间 左对齐 修饰符 :符号是减号“-”;接着是可选的最小宽度 修饰符,用十进制数表示
(3)使用 slf4j 中的 MDC 新增线程参数 “ %X ”用于输出和当前线程相关联的 MDC (嵌套诊断环境),格式 %X{xxx},使用 org.slf4j.MDC 添加 key/value 即可增加新值,
其中tracId是在MDC中设置进当前线程中的参数,记得在线程运行完时清除 clear 掉。
logback 异步日志配置
目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。 在多应用的时候,这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。 logback AsyncAppender 目前在logback 1.0.11及以上版本存在 集成到项目 异步日志记录是在原来logback上的扩展,并不是替代方式,所以只需要在原来的配置文件上添加一下配置
LogBack日志
Logback 继承自 log4j。 Logback 的架构非常的通用,适用不同的使用场景。Logback 被分成三个不同的模块:logback-core,logback-classic,logback-access。 logback-core 是其它两个模块的基础。logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J,所以你可以随意的从其它日志框架(例如:log4j 或者 java.util.logging)切回到 logack。 ***隐藏网址*** 默认情况下为ERROR、WARN、INFO级别的内容,需要DEBUG的话需要再配置文件中输入 debug=true 在配置文件中配置其中一个的内容: 使用 logging.level.包名/组名 =级别,才设置不同的日志级别输出 还可以设置日志组: logging.group.组名=包1,包2...:设置多个包为同一日志组 logging.exception-conversion-word:记录异常时使用的转换字 logging.file.max-size:最大日志文件大小 logging.config:日志配置 logging.file.max-history:最大归档文件数量 logging.pattern.console:控制台输出模式 logging.pattern.dateformat:日期格式 logging.pattern.file:日志模式级别 logging.pattern.level:日志 PID:当前进程 创建 logback-spring.xml
怎么将logback的日志信息异步到oracle数据库
logback是log4j作者推出的新日志系统,原生支持slf4j通用日志api,允许平滑切换日志系统,并且对简化应用部署中日志处理的工作做了有益的封装。***隐藏网址***Logback日志需要依赖一下jar包:slf4j-api-1.6.0.jarlogback-core-0.9.21.jarlogback-classic-0.9.21.jarlogback-access-0.9.21.jar 主配置文件为logback.xml,放在src目录下或是WEB-INF/classes下,logback会自动加载logback.xml的基本结构如下:《?xml version="1.0" encoding="UTF-8"?》 《configuration》 《appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"》 《encoder》 《pattern》%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n《/pattern》 《/encoder》 《/appender》 《root level="DEBUG"》《appender-ref ref="STDOUT" /》《/root》 《/configuration》 logback.xml的基本配置信息都包含在configuration标签中,需要含有至少一个appender标签用于指定日志输出方式和输出格式,root标签为系统默认日志进程,通过level指定日志级别,通过appender-ref关联前面指定顶的日志输出方式。例子中的appender使用的是ch.qos.logback.core.ConsoleAppender类,用于对控制台进行日志输出其中encoder标签指定日志输出格式为“时间 线程 级别 类路径 信息”logback的文件日志输出方式还提供多种日志分包策略 1.文件日志《appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"》 《file》E:/logs/mylog.txt《/file》 《rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"》 《!-- rollover daily --》 《fileNamePattern》E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log《/fileNamePattern》 《maxHistory》5《/maxHistory》 《timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"》 《!-- or whenever the file size reaches 100MB --》 《maxFileSize》100MB《/maxFileSize》 《/timeBasedFileNamingAndTriggeringPolicy》 《/rollingPolicy》 《encoder》 《pattern》%date %level %msg%n《/pattern》 《/encoder》 《/appender 文件日志输出采用的ch.qos.logback.core.rolling.RollingFileAppender类,它的基本属性包括《file》指定输入文件路径,encoder指定日志格式。其中,rollingPolicy标签指定的是日志分包策略,ch.qos.logback.core.rolling.TimeBasedRollingPolicy类实现的是基于时间的分包策略,分包间隔是根据fileNamePattern中指定的事件最小单位,比如例子中的%d{yyyy-MM-dd_HH-mm}的最小事件单位为分,它的触发方式就是1分钟,策略在每次想日志中添加新内容时触发,如果满足条件,就将mylog.txt复制到E:/logs/目录并更名为mylog-2010-06-22_13-13.1.log,并删除原mylog.txt。maxHistory的值为指定E:/logs目录下存在的类似mylog-2010-06-22_13-13.1.log文件的最大个数,当超过时会删除最早的文件。此外,策略还可以互相嵌套,比如本例中在时间策略中又嵌套了文件大小策略,ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP实现对单文件大小的判断,当超过maxFileSize中指定大大小时,文件名中的变量%i会加一,即在不满足时间触发且满足大小触发时,会生成mylog-2010-06-22_13-13.1.log和mylog-2010-06-22_13-13.2.log两个文件。 2.数据库日志《appender name="DB" class="ch.qos.logback.classic.db.DBAppender"》 《connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"》 《dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"》 《driverClass》com.mysql.jdbc.Driver《/driverClass》 《url》jdbc:mysql://127.0.0.1:3306/databaseName《/url》 《user》root《/user》 《password》root《/password》 《/dataSource》 《/connectionSource》 《/appender》 数据库输出使用ch.qos.logback.classic.db.DBAppender类,数据源支持c3p0数据连接池,例子中使用的MySql,其他配置方式请参考官方文档。使用数据库输出需要在数据库中建立3个表,建表脚本如下# Logback: the reliable, generic, fast and flexible logging framework. # Copyright (C) 1999-2010, QOS.ch. All rights reserved. # ***隐藏网址***# conditions. # This SQL script creates the required tables by ch.qos.logback.classic.db.DBAppender. # # It is intended for MySQL databases. It has been tested on MySQL 5.1.37 # on Linux BEGIN; DROP TABLE IF EXISTS logging_event_property; DROP TABLE IF EXISTS logging_event_exception; DROP TABLE IF EXISTS logging_event; COMMIT; BEGIN; CREATE TABLE logging_event ( timestmp BIGINT NOT NULL, formatted_message TEXT NOT NULL, logger_name VARCHAR(254) NOT NULL, level_string VARCHAR(254) NOT NULL, thread_name VARCHAR(254), reference_flag SMALLINT, arg0 VARCHAR(254), arg1 VARCHAR(254), arg2 VARCHAR(254), arg3 VARCHAR(254), caller_filename VARCHAR(254) NOT NULL, caller_class VARCHAR(254) NOT NULL, caller_method VARCHAR(254) NOT NULL, caller_line CHAR(4) NOT NULL, event_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ); COMMIT; BEGIN; CREATE TABLE logging_event_property ( event_id BIGINT NOT NULL, mapped_key VARCHAR(254) NOT NULL, mapped_value TEXT, PRIMARY KEY(event_id, mapped_key), FOREIGN KEY (event_id) REFERENCES logging_event(event_id) ); COMMIT; BEGIN; CREATE TABLE logging_event_exception ( event_id BIGINT NOT NULL, i SMALLINT NOT NULL, trace_line VARCHAR(254) NOT NULL, PRIMARY KEY(event_id, i), FOREIGN KEY (event_id) REFERENCES logging_event(event_id) ); COMMIT; 3.其他此外logback还提供基于mail,基于jmx等多种日志输出方式,你也可以通过继承ch.qos.logback.core.AppenderBase 自己写appender实现 除了使用默认的日志主线程《root》外,还可以通过《logger》标签定制其他日志线程如:《logger name="com.test" level="DEBUG"》 《appender-ref ref="STDOUT" /》 《/logger》 其中name指定线程针对的包路径,level是日志级别,《appender-ref》定义使用那种appender。例如要实现打印jdbc提交的sql,可以加入如下logger:《logger name="java.sql.Connection" level="DEBUG"》《appender-ref ref="STDOUT" /》《/logger》 贴出我完整的logback.xml《?xml version="1.0" encoding="UTF-8"?》 《configuration》 《!-- log output to file --》 《appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"》 《file》E:/logs/mylog.txt《/file》 《rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"》 《!-- rollover daily --》 《fileNamePattern》E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log《/fileNamePattern》 《maxHistory》5《/maxHistory》 《timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"》 《!-- or whenever the file size reaches 100MB --》 《maxFileSize》100MB《/maxFileSize》 《/timeBasedFileNamingAndTriggeringPolicy》 《/rollingPolicy》 《encoder》 《pattern》%date %level %msg%n《/pattern》 《/encoder》 《/appender》 《!-- log output to console --》 《appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"》 《encoder》 《pattern》%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n《/pattern》 《/encoder》 《/appender》 《!-- log output to db--》 《appender name="DB" class="ch.qos.logback.classic.db.DBAppender"》 《connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"》 《dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"》 《driverClass》com.mysql.jdbc.Driver《/driverClass》 《url》jdbc:mysql://127.0.0.1:3306/tunneldb《/url》 《user》root《/user》 《password》123123《/password》 《/dataSource》 《/connectionSource》 《/appender》 《logger name="com.ttt.ttt" level="DEBUG"》 《appender-ref ref="STDOUT" /》 《/logger》 《logger name="java.sql.Connection" level="DEBUG"》《appender-ref ref="STDOUT" /》《/logger》 《!-- 打印sql 《logger name="java.sql.Statement" level="DEBUG"》《appender-ref ref="STDOUT" /》《/logger》 《logger name="java.sql.PreparedStatement" level="DEBUG"》《appender-ref ref="STDOUT" /》《/logger》 《logger name="java.sql.ResultSet" level="DEBUG"》《appender-ref ref="STDOUT" /》《/logger》 --》 《root level="DEBUG"》《appender-ref ref="ROLLING" /》《/root》 《/configuration》 总结:logback提供了丰富而高效的日志输出方式,并通过滚动策略,将实施时复杂的备份策略整合,极大的简化的部署成本。
更多文章:
二郎神最怕的人是谁(宝莲灯电视剧中,百花仙子为什么一说盘古初开天地时一说到睫毛二郎神就很害怕拜托了各位 谢谢)
2024年7月6日 03:38
bootstrap selectpicker(bootstrap-select显示两个下拉栏怎么解决)
2024年9月2日 13:30
random翻译(随便的人,英语怎么说 搜了下,有翻译成random,casual等,但感觉不地道哦.)
2024年6月20日 21:00
submarine(submarine,marine,naval、这英语怎么读)
2024年7月19日 23:55
linux镜像文件iso下载(如何制作Oracle Linux ISO文件)
2024年6月21日 00:25
linux下popen(linux popen system 超时问题)
2024年7月13日 18:04
springboot整合shiro(「开源」springboot快速开发框架推荐,接私活利器)
2024年7月20日 03:50
shell判断文件内容是否包含(求一个shell脚本:实现判断一个文件是否包含某内容,如果包含,刚删除所在的行(或替换该行);如果)
2024年7月26日 09:25
印度试射新导弹(通古斯卡防空系统【中程扩展防空系统首次试验获得成功等】)
2024年6月25日 05:16
新视野大学英语3读写教程答案(《新视野大学英语第三版读写教程3》课后习题答案是什么)
2024年9月2日 19:30
解码base32(下面这段代码是什么编码加密的如何解密要说详细的解密步骤,越详细越好 谢谢)
2024年7月20日 00:20