企业网站建设的成本构成,厦门百度竞价推广,旅游网站开发毕业设计开题报告,移动网站开发内容一、概述 Spring Boot在所有内部日志中使用 Commons Logging #xff0c;但对底层日志的实现保持开放。 为 Java Util Logging 、 Log4j2 、 Logback 提供了默认配置。 在每一种情况下#xff0c;记录器#xff08;logger#xff09;都被预设为使用控制台输出#xff0c;也… 一、概述 Spring Boot在所有内部日志中使用 Commons Logging 但对底层日志的实现保持开放。 为 Java Util Logging 、 Log4j2 、 Logback 提供了默认配置。 在每一种情况下记录器logger都被预设为使用控制台输出也可以选择输出到文件。 默认情况下如果你使用 “Starter”则默认使用Logback。 适当的Logback路由也包括在内以确保使用Java Util Logging、Commons Logging、Log4J或SLF4J的依赖库都能正确工作。 有很多适用于Java的日志框架。 如果上面的列表看起来很混乱请不要担心。 一般来说你不需要改变你的日志依赖Spring Boot的默认值就很好用。 当你把你的应用程序部署到一个servlet容器或应用服务器时用Java Util Logging API执行的日志不会被传送到你的应用程序的日志中。 这可以防止由容器或其他已经部署到它的应用程序执行的日志出现在你的应用程序的日志中。 二、 日志格式 Spring Boot的默认的日志输出格式类似于下面的例子。 2023-06-26T13:49:18.37508:00 INFO 14424 --- [myapp] [ main] o.s.b.d.f.s.MyApplication : Starting MyApplication using Java 17 with PID 14424 (/opt/apps/myapp.jar started by myuser in /opt/apps/)
2023-06-26T13:49:18.39008:00 INFO 14424 --- [myapp] [ main] o.s.b.d.f.s.MyApplication : No active profile set, falling back to 1 default profile: default
2023-06-26T13:49:20.19708:00 INFO 14424 --- [myapp] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-06-26T13:49:20.21808:00 INFO 14424 --- [myapp] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-06-26T13:49:20.21808:00 INFO 14424 --- [myapp] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.10]
2023-06-26T13:49:20.41208:00 INFO 14424 --- [myapp] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-06-26T13:49:20.41708:00 INFO 14424 --- [myapp] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1882 ms
2023-06-26T13:49:21.06908:00 INFO 14424 --- [myapp] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path
2023-06-26T13:49:21.07808:00 INFO 14424 --- [myapp] [ main] o.s.b.d.f.s.MyApplication : Started MyApplication in 3.325 seconds (process running for 3.836) 输出的项目如下。 Date和时Time精确到毫秒易于排序。日志级别: ERROR, WARN, INFO, DEBUG, 或 TRACE.进程ID。一个 --- 分隔符以区分实际日志信息的开始。Application name: 包含在方括号中仅当 spring.application.name 被设置时才默认记录。线程名称包含在方括号中对于控制台输出可能会被截断。相关ID如果启用了trace功能上面的例子中没有显示。记录器名称这通常是源类的名称通常是缩写。日志消息。 Logback没有 FATAL 级别。 它被映射到 ERROR。 如果你有一个 spring.application.name 属性但不希望它被记录你可以将 logging.include-application-name 设置为 false。 三、 控制台输出 默认情况下日志会输出 ERROR、WARN 和 INFO 级别的消息到控制台。 你也可以通过用 --debug 标志启动你的应用程序来启用 debug 模式。 $ java -jar myapp.jar --debug 你也可以在你的 application.properties 中指定 debugtrue 当debug模式被启用时一些核心记录器嵌入式容器、Hibernate和Spring Boot被配置为输出更多信息。 启用debug模式并不意味着将你的应用程序配置为以 DEBUG 级别记录所有信息。 另外你可以通过在启动应用程序时使用 --trace 标志或在 application.properties 中使用 tracetrue 来启用 “trace” 模式。 这样做可以对一些核心记录器嵌入式容器、Hibernate schema生成和整个Spring组合进行跟踪记录。 1. 彩色编码的输出 如果你的终端支持ANSI就会使用彩色输出来帮助阅读。 你可以将 spring.output.ansi.enabled 设置为 支持的值以覆盖自动检测。 颜色编码是通过使用 %clr 转换关键字来配置的。 在其最简单的形式中转换器根据日志级别对输出进行着色如下面的例子中所示。 %clr(%5p) 下表描述了日志级别与颜色的映射关系。 日志级别 颜色 FATAL 红 ERROR 红 WARN 黄 INFO 绿 DEBUG 绿 TRACE 绿 另外你也可以通过为转换提供一个选项来指定应该使用的颜色或样式。 例如要使文本为黄色请使用以下设置。 %clr(%d{yyyy-MM-ddTHH:mm:ss.SSSXXX}){yellow} 支持以下颜色和样式。 bluecyanfaintgreenmagentaredyellow 四、 输出到文件 默认情况下Spring Boot只向控制台记录日志不写日志文件。 如果你想在控制台输出之外写日志文件你需要设置 logging.file.name 或 logging.file.path 属性例如在你的 application.properties 中。 下表显示了 logging.* 属性如何被一起使用。 Table 5. Logging properties logging.file.name logging.file.path Example Description (none) (none) 只在控制台进行记录。 指定文件 (none) my.log 写入指定的日志文件。 名称可以是一个确切的位置也可以是与当前目录的相对位置。 (none) 指定目录 /var/log 将 spring.log 写到指定目录。 名称可以是一个确切的位置也可以是与当前目录的相对位置。 日志文件在达到10MB时就会轮换与控制台输出一样默认情况下会记录 ERROR 、WARN 级和 INFO 级别的信息。 日志属性独立于实际的日志基础设施。 因此特定的配置属性如Logback的 logback.configurationFile 不由spring Boot管理。 五、文件轮换滚动日志 如果你使用Logback可以使用你的 application.properties 或 application.yaml 文件来微调日志轮换设置。 对于所有其他的日志系统你将需要自己直接配置轮换设置例如如果你使用Log4J2那么你可以添加一个 log4j2.xml 或 log4j2-spring.xml 文件。 支持以下轮换策略属性。 属性 说明 logging.logback.rollingpolicy.file-name-pattern 用于创建日志归档的文件名模式。 logging.logback.rollingpolicy.clean-history-on-start 应用程序启动时是否行日志归档清理。 logging.logback.rollingpolicy.max-file-size 日志文件归档前的最大尺寸文件最大体积达到这个体积就会归档。 logging.logback.rollingpolicy.total-size-cap 日志档案在被删除前的最大尺寸归档文件最大占用大小超过这个大小后会被删除。 logging.logback.rollingpolicy.max-history 要保留的归档日志文件的最大数量默认为7。 六、日志级别 所有支持的日志系统都可以通过使用 logging.level.logger-namelevel 在Spring的 Environment例如在 application.properties中设置日志级别其中 level 是 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, 或 OFF 之一。 root 记录器logger的级别可以通过 logging.level.root 来配置。 下面的例子显示了 application.properties 中潜在的日志设置。 Properties Yaml logging:level:root: warnorg.springframework.web: debugorg.hibernate: error 也可以使用环境变量来设置日志级别。 例如LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEBDEBUG 将设置 org.springframework.web 为 DEBUG 。 上述方法只适用于包级日志。 由于宽松绑定总是将环境变量转换为小写字母所以不可能用这种方式为单个类配置日志。 如果你需要为一个类配置日志你可以使用SPRING_APPLICATION_JSON变量。 七、 日志组Log Groups 能够将相关的日志记录器分组以便同时对它们进行配置这通常很有用。 例如你可能经常改变 所有 与Tomcat相关的记录器的记录级别但你不容易记住最高级别的包。 为了帮助解决这个问题Spring Boot允许你在Spring Environment 中定义日志组。 例如你可以通过在 application.properties 中加入 “tomcat” group 来定义它。 Properties Yaml logging:group:tomcat: org.apache.catalina,org.apache.coyote,org.apache.tomcat 一旦定义好后就可以用一行代码来改变组中所有logger的级别。 Properties Yaml logging:level:tomcat: trace Spring Boot包括以下预定义的日志组可以开箱即用。 组名 组中的logger web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener 八、 使用日志 Shutdown Hook 为了在你的应用程序终止时释放日志资源我们提供了一个Shutdown Hook它将在JVM退出时触发日志系统清理。 除非你的应用程序是以war文件的形式部署的否则这个Shutdown Hook会自动注册。 如果你的应用程序有复杂的上下文层次结构Shutdown Hook可能无法满足你的需求。 如果不能请禁用关机钩子并研究底层日志系统直接提供的选项。 例如Logback提供了 context selectors允许每个记录器在它自己的上下文中被创建。 你可以使用 logging.register-shutdown-hook 属性来禁用Shutdown Hook。 将其设置为 false 将禁用注册。 你可以在你的 application.properties 或 application.yaml 文件中设置该属性。 Properties Yaml logging:register-shutdown-hook: false 九、 自定义日志配置 各种日志系统可以通过在classpath上包含适当的库来激活并且可以通过在classpath的根目录下或在 Spring Environment 属性指定的位置提供一个合适的配置文件来进一步定制 logging.config。 你可以通过使用 org.springframework.boot.logging.LoggingSystem 系统属性强制Spring Boot使用特定的日志系统。 该值应该是 LoggingSystem 实现的全类名。 你也可以通过使用 none 的值来完全禁用Spring Boot的日志配置。 S由于日志是在创建 ApplicationContext 之前初始化的所以不可能从Spring Configuration 文件中的 PropertySources 控制日志。 改变日志系统或完全停用它的唯一方法是通过System properties。 根据你的日志系统会加载以下文件。 日志系统 配置文件 Logback logback-spring.xml, logback-spring.groovy, logback.xml 或者 logback.groovy Log4j2 log4j2-spring.xml 或者 log4j2.xml JDK (Java Util Logging) logging.properties 在可能的情况下我们建议你使用 -spring 变体来进行日志配置例如 logback-spring.xml 而不是 logback.xml 。 如果你使用标准配置位置Spring不能完全控制日志初始化。 当从 可执行的jar 中运行时Java Util Logging有一些已知的类加载问题会导致问题。 如果可能的话我们建议你在从 可执行的jar 中运行时避免使用它。 为了帮助定制其他一些属性从Spring的 Environment 转移到System properties如下表所示。 Spring Environment System Property 备注 logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD 记录异常时使用的转换词。 logging.file.name LOG_FILE 如果定义了它将用于默认的日志配置中。 logging.file.path LOG_PATH 如果定义了它将用于默认的日志配置中。 logging.pattern.console CONSOLE_LOG_PATTERN 在控制台stdout使用的日志输出模式。 logging.pattern.dateformat LOG_DATEFORMAT_PATTERN date 格式化. logging.charset.console CONSOLE_LOG_CHARSET 控制台输出日志的字符编码。 logging.threshold.console CONSOLE_LOG_THRESHOLD 用于控制台日志记录的日志级别。 logging.pattern.file FILE_LOG_PATTERN 要在文件中使用的日志模式如果 LOG_FILE 被启用。 logging.charset.file FILE_LOG_CHARSET 文件日志的字符编码如果 LOG_FILE 被启用。 logging.threshold.file FILE_LOG_THRESHOLD 用于文件日志记录的日志级别。 logging.pattern.level LOG_LEVEL_PATTERN 渲染日志级别时使用的格式默认为 %5p 。 PID PID 当前的进程ID 如果你使用Logback以下属性也会被转移。 Spring Environment System Property 备注 logging.logback.rollingpolicy.file-name-pattern LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN 滚动日志文件名的模式默认为 ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz 。 logging.logback.rollingpolicy.clean-history-on-start LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START 是否在启动时清理归档日志文件。 logging.logback.rollingpolicy.max-file-size LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE 最大日志文件大小。 logging.logback.rollingpolicy.total-size-cap LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP 要保留的日志备份的总大小。 logging.logback.rollingpolicy.max-history LOGBACK_ROLLINGPOLICY_MAX_HISTORY 要保留的最大归档日志文件数量。 所有支持的日志系统在解析其配置文件时都可以从 System properties 中获取属性。 例子见 spring-boot.jar 中的默认配置。 LogbackLog4j 2Java Util logging 如果你想在日志属性中使用占位符你应该使用Spring Boot的语法而不是底层框架的语法。 值得注意的是如果你使用Logback你应该使用 : 作为属性名和其默认值之间的分隔符而不是使用 :- 。 你可以通过只覆盖 LOG_LEVEL_PATTERN 或使用Logback的 logging.pattern.level 来向日志行添加MDC和其他临时内容。 例如如果你使用 logging.pattern.leveluser:%X{user} %5p 那么默认的日志格式包含一个 user 的MDC条目如果它存在的话如下例所示。 2019-08-30 12:30:04.031 user:someone INFO 22174 --- [ nio-8080-exec-0] demo.Controller
Handling authenticated request 十、 Logback 扩展 Spring Boot包括一些对Logback的扩展可以帮助进行高级配置。 你可以在你的 logback-spring.xml 配置文件中使用这些扩展。 因为标准的 logback.xml 配置文件被过早加载你不能在其中使用扩展。 你需要使用 logback-spring.xml 或者定义一个 logging.config 属性。 ERROR in ch.qos.logback.core.joran.spi.Interpreter4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter4:71 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]] 扩展程序不能与 Logback的配置扫描 一起使用。 如果你试图这样做对配置文件进行修改会导致类似于以下的错误被记录下来。 1. 特定的配置文件 springProfile 标签让你可以根据活动的Spring配置文件选择性地包括或排除配置的部分 支持在 configuration 元素的任何地方定义它。 使用 name 属性来指定接受配置的配置文件。 springProfile 标签可以包含一个配置文件名称例如 staging 或一个配置文件表达式。 配置文件表达式允许表达更复杂的配置文件逻辑例如 production (eu-central | eu-west) 。 查看 Spring 框架参考指南 以了解更多细节。 下面的列表显示了三个样本配置文件。 springProfile namestaging!-- configuration to be enabled when the staging profile is active --
/springProfilespringProfile namedev | staging!-- configuration to be enabled when the dev or staging profiles are active --
/springProfilespringProfile name!production!-- configuration to be enabled when the production profile is not active --
/springProfile 2. 环境属性Environment Properties springProperty 标签可以访问 Spring Environment 中的属性以便在Logback中使用。 如果你想在Logback配置中访问 application.properties 文件中的值这样做会很有用。 该标签的工作方式与Logback的标准 property 标签类似。 然而你不是直接指定一个 value 而是指定属性的 source 来自 Environment 。 如果你需要在 local 范围以外的地方存储该属性你可以使用 scope 属性。 如果你需要一个后备值默认值万一该属性没有在 Environment 中设置你可以使用 defaultValue 属性。 下面的例子显示了如何公开属性以便在Logback中使用。 springProperty scopecontext namefluentHost sourcemyapp.fluentd.hostdefaultValuelocalhost/
appender nameFLUENT classch.qos.logback.more.appenders.DataFluentAppenderremoteHost${fluentHost}/remoteHost...
/appender source 必须以kebab风格指定如 my.property-name 。 然而属性可以通过使用宽松的规则添加到 Environment 中。 十一、 Log4j2 扩展 Spring Boot包括一些对Log4j2的扩展可以帮助进行高级配置。你可以在任何 log4j2-spring.xml 配置文件中使用这些扩展。 因为标准的 log4j2.xml 配置文件被过早加载你不能在其中使用扩展。你需要使用 log4j2-spring.xml 或者定义一个 logging.config 属性。 这些扩展取代了Log4J提供的 Spring Boot支持。 你应该确保在你的构建中不包括 org.apache.logging.log4j:log4j-spring-boot 模块。 1. 特定配置文件配置 SpringProfile 标签让你可以根据活动的Spring配置文件选择性地包括或排除配置的部分。配置文件部分被支持在 Configuration 元素的任何地方。使用 name 属性来指定哪个配置文件接受配置。 SpringProfile 标签可以包含一个配置文件名称例如 staging或一个配置文件表达式。 配置文件表达式允许表达更复杂的配置文件逻辑例如 production (eu-central | eu-west)。查看 Spring框架参考指南 以了解更多细节。 下面的列表显示了三个样本配置文件。 SpringProfile namestaging!-- configuration to be enabled when the staging profile is active --
/SpringProfileSpringProfile namedev | staging!-- configuration to be enabled when the dev or staging profiles are active --
/SpringProfileSpringProfile name!production!-- configuration to be enabled when the production profile is not active --
/SpringProfile 2. 环境Environment属性查找 如果你想在Log4j2配置中引用Spring Environment 中的属性你可以使用 spring: 前缀 查找。如果你想在Log4j2配置中访问 application.properties 文件中的值这样做会很有用。 下面的例子显示了如何设置一个名为 applicationName 的Log4j2属性它从Spring Environment 中读取 spring.application.name。 PropertiesProperty nameapplicationName${spring:spring.application.name}/Property
/Properties 查询key应以kebabf风格指定如 my.property-name。 3. Log4j2 系统属性System Properties Log4j2支持一些 System Properties可以用来配置各种项目。例如log4j2.skipJansi 系统属性可以用来配置 ConsoleAppender 是否会在Windows上尝试使用 Jansi 输出流。 Log4j2 初始化后加载的所有系统属性都可以从Spring Environment 中获得。例如你可以在 application.properties 文件中添加 log4j2.skipJansifalse让 ConsoleAppender 在Windows上使用Jansi。 只有当系统属性system properties和操作系统环境变量不包含正在加载的值时才会考虑Spring Environment。 在早期Log4j2初始化期间加载的系统属性不能引用Spring Environment。例如Log4j2用于允许选择默认Log4j2实现的属性是在 Spring Environment 可用之前使用的。 一、 概述 Spring Boot 对所有内部日志记录使用 Commons Logging但使底层日志实现保持打开状态。 为 Java Util Logging、Log4j2 和 Logback 提供了缺省配置。 在每种情况下记录器都预先配置为使用控制台输出并提供可选的文件输出。 默认情况下如果您使用“初学者”则使用登录进行日志记录。 还包括适当的 Logback 路由以确保使用 Java Util Logging、Commons Logging、Log4J 或 SLF4J 的依赖库都能正常工作。 二、日志格式 Spring Boot的默认日志输出类似于以下示例
2023-02-23T14:18:26.407Z INFO 20239 --- [ main] o.s.b.d.f.s.MyApplication : Starting MyApplication using Java 17.0.6 with PID 20239 (/opt/apps/myapp.jar started by myuser in /opt/apps/)
2023-02-23T14:18:26.414Z INFO 20239 --- [ main] o.s.b.d.f.s.MyApplication : No active profile set, falling back to 1 default profile: default
2023-02-23T14:18:28.434Z INFO 20239 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-02-23T14:18:28.563Z INFO 20239 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-02-23T14:18:28.563Z INFO 20239 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.5]
2023-02-23T14:18:28.976Z INFO 20239 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-02-23T14:18:28.990Z INFO 20239 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2444 ms
2023-02-23T14:18:32.397Z INFO 20239 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path
2023-02-23T14:18:32.438Z INFO 20239 --- [ main] o.s.b.d.f.s.MyApplication : Started MyApplication in 7.241 seconds (process running for 8.232) 输出以下项目 日期和时间毫秒精度易于排序。 日志级别错误、警告、信息、调试或跟踪。 进程ID。 分隔符用于区分实际日志消息的开头。 线程名称用方括号括起来对于控制台输出可以截断。 记录器名称这通常是源类名通常缩写。 日志消息。 三、控制台输出 默认日志配置在写入消息时将消息回显到控制台。默认情况下记录ERROR级别、WARN级别和INFO级别消息。您还可以通过使用--debug标志启动应用程序来启用“调试”模式。 $ java -jar myapp.jar --debug 启用调试模式后将配置一组核心记录器嵌入式容器、Hibernate和Spring Boot以输出更多信息。启用调试模式不会将应用程序配置为使用debug级别记录所有消息。 或者您可以通过使用--trace标志启动应用程序来启用“跟踪”模式或在应用程序中使用tracetrue。财产。这样可以为选择的核心记录器嵌入式容器、Hibernate模式生成和整个Spring组合启用跟踪日志记录。 四、不同颜色编码输出 如果您的终端支持ANSI则使用颜色输出来提高可读性。您可以将spring.output.ansi.enabled设置为支持的值以覆盖自动检测。 通过使用%clr转换字配置颜色编码。在最简单的形式中转换器根据日志级别为输出着色如下例所示
%clr(%5p) 下表描述了日志级别到颜色的映射 Level Color FATAL Red ERROR Red WARN Yellow INFO Green DEBUG Green TRACE Green 或者您可以通过将其作为转换选项来指定应使用的颜色或样式。例如要使文本变为黄色请使用以下设置
%clr(%d{yyyy-MM-ddTHH:mm:ss.SSSXXX}){yellow} 支持以下颜色和样式 blue cyan faint green magenta red yellow 五、文件输出 默认情况下Spring Boot只记录到控制台不写入日志文件。如果要在控制台输出之外写入日志文件则需要设置logging.file.name或logging.file.path属性例如在application.properties中。 下表显示了logging.*财产如何一起使用 表 8.日志记录属性 logging.file.name logging.file.path Example Description (none) (none) 仅控制台日志记录。 Specific file (none) my.log 写入指定的日志文件。 名称可以是确切的位置也可以是相对于当前目录的位置。 (none) Specific directory /var/log 将spring.log写入指定目录。名称可以是确切的位置或相对于当前目录。 日志文件在达到10MB时会旋转与控制台输出一样默认情况下会记录ERROR级别、WARN级别和INFO级别的消息。 七、文件转换 如果使用Logback则可以使用application.properties或application.yaml文件微调日志轮换设置。对于所有其他日志记录系统您需要自己直接配置旋转设置例如如果使用Log4j2则可以添加Log4j2.xml或Log4j2-pring.xml文件。 支持以下轮换策略属性 名字 描述 logging.logback.rollingpolicy.file-name-pattern 用于创建日志存档的文件名模式。 logging.logback.rollingpolicy.clean-history-on-start 如果应在应用程序启动时进行日志归档清理。 logging.logback.rollingpolicy.max-file-size 日志文件存档前的最大大小。 logging.logback.rollingpolicy.total-size-cap 日志存档在删除之前可以采用的最大大小。 logging.logback.rollingpolicy.max-history 要保留的最大归档日志文件数缺省值为 7。 八、日志级别 所有支持的日志记录系统都可以通过使用logging.level.logger-namelevel在Spring环境中设置日志记录程序级别例如在application.properties中其中级别是TRACE、DEBUG、INFO、WARN、ERROR、FATAL或OFF之一。根日志记录程序可以通过使用日志记录.level.root进行配置。 以下示例显示application.properties中的潜在日志记录设置
logging.level.rootwarn
logging.level.org.springframework.webdebug
logging.level.org.hibernateerror还可以使用环境变量设置日志记录级别。例如LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEBDEBUG将ORG.SPRINGFRAMEWORK.WEB设置为DEBUG。 上述方法仅适用于包级日志记录。由于宽松绑定总是将环境变量转换为小写因此不可能以这种方式为单个类配置日志记录。如果需要为类配置日志记录可以使用SPRING_APPLICATION_JSON变量。 九、日志组 能够将相关的记录器分组在一起以便可以同时配置它们这通常很有用。例如您可能通常会更改所有Tomcat相关记录器的日志记录级别但您不容易记住顶级包。 为了帮助实现这一点Spring Boot允许您在Spring环境中定义日志组。例如以下是如何通过将“tomcat”组添加到您的application.properties
logging.group.tomcatorg.apache.catalina,org.apache.coyote,org.apache.tomcat定义后您可以使用单行更改组中所有记录器的级别
logging.level.tomcattraceSpring Boot包括以下预定义的日志记录组可以立即使用 Name Loggers web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener 十、使用日志关闭钩子 为了在应用程序终止时释放日志资源提供了一个在JVM退出时触发日志系统清理的关闭挂钩。除非将应用程序部署为war文件否则会自动注册此关闭挂钩。如果应用程序具有复杂的上下文层次结构则关闭挂钩可能无法满足您的需要。如果没有请禁用关机挂钩并调查底层日志系统直接提供的选项。例如Logback提供了上下文选择器允许在自己的上下文中创建每个Logger。您可以使用logging.register-shutdown-hook属性禁用关机挂钩。将其设置为false将禁用注册。您可以在application.properties或application.yaml文件中设置属性
logging.register-shutdown-hookfalse十一、自定义日志配置 可以通过在类路径中包含适当的库来激活各种日志记录系统并且可以通过在路径的根目录中或在以下Spring Environment属性指定的位置提供适当的配置文件来进一步定制logging.config。 通过使用org.springframework.Boot.logging.LoggingSystem系统属性可以强制Spring Boot使用特定的日志记录系统。该值应该是LoggingSystem实现的完全限定类名。您还可以使用值none完全禁用Spring Boot的日志记录配置。 根据您的日志记录系统将加载以下文件 Logging System Customization Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy Log4j2 log4j2-spring.xml or log4j2.xml JDK (Java Util Logging) logging.properties 为了帮助定制一些其他财产从Spring环境传输到系统财产如下表所述 Spring Environment System Property Comments logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD The conversion word used when logging exceptions. logging.file.name LOG_FILE If defined, it is used in the default log configuration. logging.file.path LOG_PATH If defined, it is used in the default log configuration. logging.pattern.console CONSOLE_LOG_PATTERN The log pattern to use on the console (stdout). logging.pattern.dateformat LOG_DATEFORMAT_PATTERN Appender pattern for log date format. logging.charset.console CONSOLE_LOG_CHARSET The charset to use for console logging. logging.pattern.file FILE_LOG_PATTERN The log pattern to use in a file (if LOG_FILE is enabled). logging.charset.file FILE_LOG_CHARSET The charset to use for file logging (if LOG_FILE is enabled). logging.pattern.level LOG_LEVEL_PATTERN The format to use when rendering the log level (default %5p). PID PID The current process ID (discovered if possible and when not already defined as an OS environment variable). 如果使用 Logback则还会传输以下属性 Spring Environment System Property Comments logging.logback.rollingpolicy.file-name-pattern LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN Pattern for rolled-over log file names (default ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz). logging.logback.rollingpolicy.clean-history-on-start LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START Whether to clean the archive log files on startup. logging.logback.rollingpolicy.max-file-size LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE Maximum log file size. logging.logback.rollingpolicy.total-size-cap LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP Total size of log backups to be kept. logging.logback.rollingpolicy.max-history LOGBACK_ROLLINGPOLICY_MAX_HISTORY Maximum number of archive log files to keep 所有受支持的日志记录系统在解析其配置文件时都可以参考System财产。有关示例请参见spring-bot.jar中的默认配置 Logback Log4j 2 Java Util logging 十二、示例 Spring Boot 没有强制性的日志记录依赖项除了通常由 Spring Framework 模块提供的 Commons Logging API。 要使用 Logback您需要将其包含在类路径中。 推荐的方法是通过启动器这完全取决于 . 对于 Web 应用程序您只需要 因为它以传递方式依赖于日志记录启动器。 如果使用 Maven则以下依赖项会为您添加日志记录
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency Spring Boot 有一个抽象它试图根据类路径的内容配置日志记录。 如果 Logback 可用则它是首选。LoggingSystem 如果需要对日志记录进行的唯一更改是设置各种记录器的级别则可以使用“logging.level”前缀执行此操作如以下示例所示application.properties
logging.level.org.springframework.webdebug
logging.level.org.hibernateerror 除了控制台之外您还可以使用 设置要将日志写入的文件的位置。要配置日志记录系统的更细粒度设置您需要使用相关支持的本机配置格式。 默认情况下Spring 引导从系统的默认位置例如 Logback选取本机配置但您可以使用该属性设置配置文件的位置。 1、为日志记录配置回日志 如果需要将自定义应用于 logback而不是可以使用 实现的自定义项则需要添加标准 logback 配置文件。 您可以将文件添加到类路径的根目录中以便进行回查 Spring 引导提供了许多登录配置这些配置可以在您自己的配置中。 这些包括旨在允许重新应用某些常见的 Spring 引导约定。included 以下文件在 下提供org/springframework/boot/logging/logback/ defaults.xml- 提供转换规则、模式属性和常用记录器配置。 console-appender.xml- 使用 .ConsoleAppenderCONSOLE_LOG_PATTERN file-appender.xml- 使用适当的设置添加 和。RollingFileAppenderFILE_LOG_PATTERNROLLING_FILE_NAME_PATTERN 此外还提供了旧文件以与早期版本的 Spring Boot 兼容。base.xml 典型的自定义文件如下所示logback.xml ?xml version1.0 encodingUTF-8?
configurationinclude resourceorg/springframework/boot/logging/logback/defaults.xml/include resourceorg/springframework/boot/logging/logback/console-appender.xml /root levelINFOappender-ref refCONSOLE //rootlogger nameorg.springframework.web levelDEBUG/
/configuration 您的登录配置文件还可以利用负责为您创建的系统属性 ${PID}当前进程 ID。 ${LOG_FILE}是否在引导的外部配置中设置。logging.file.name ${LOG_PATH}是否在 Boot 的外部配置中设置了表示日志文件所在的目录。logging.file.path ${LOG_EXCEPTION_CONVERSION_WORD}是否在引导的外部配置中设置。logging.exception-conversion-word ${ROLLING_FILE_NAME_PATTERN}是否在引导的外部配置中设置。logging.pattern.rolling-file-name Spring Boot 还通过使用自定义 Logback 转换器在控制台上但不在日志文件中提供了一些不错的 ANSI 颜色终端输出 2、配置 log4j 用于日志记录 Spring Boot 支持 Log4j 2 进行日志记录配置如果它位于类路径上。 如果使用启动器来组装依赖项则必须排除 Logback然后改为包含 Log4j 2。 如果您不使用启动器除了 Log4j 2 之外您还需要至少提供。 推荐的路径是通过启动器即使它需要一些摇晃。 以下示例显示了如何在 Maven 中设置启动器 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId
/dependency
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class Log4j2Test {private static final Logger logger LogManager.getLogger();public Log4j2Test(){logger.info( Hello World! );}
}