`

关于 logback 使用遇到问题与解决问题记录

 
阅读更多

logback.xml文件中的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 日志组件启动时,打印调试信息,并监控此文件变化,周期300秒 -->
<configuration scan="true" scanPeriod="300 seconds" debug="false">
	<!--针对jul的性能优化 -->
	<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
		<resetJUL>true</resetJUL>
	</contextListener>
	<!-- 配置文件,包括此文件内的所有变量的配置 -->
	<property name="LOG_PATH" value="${user.dir}/logs" />
	<property name="APP_NAME" value="server" />
	<!-- contextName主要是为了区分在一个web容器下部署多个应用启用jmx时,不会出现混乱 -->
	<contextName>${APP_NAME}</contextName>
	<!-- ***************************************************************** -->
	<!-- 配置输出到控制台,仅在开发测试时启用输出到控制台 ,下面的语句在window环境下生效,使用mac或者ubuntu的同学,请自己构造下 -->
	<!-- ***************************************************************** -->
	<if condition='property("os.name").toUpperCase().contains("WINDOWS") || property("os.name").toUpperCase().contains("MAC")'>
		<then>
			<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
				<encoder>
					<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{0}:%L- %msg%n</pattern>
				</encoder>
			</appender>
			<root>
				<appender-ref ref="STDOUT" />
			</root>
		</then>
	</if>
	<!-- ***************************************************************** -->
	<!-- info级别的日志appender -->
	<!-- ***************************************************************** -->
	<appender name="APP-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_PATH}/${APP_NAME}-info-30dt.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_PATH}/${APP_NAME}-info-30dt.log.%d{yyyy-MM-dd}.%i
			</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>1024MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{0}:%L- %msg%n</pattern>
		</encoder>
	</appender>
	<!-- ***************************************************************** -->
	<!-- error级别日志appender -->
	<!-- ***************************************************************** -->
	<appender name="APP-ERR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_PATH}/${APP_NAME}-error-30dt.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_PATH}/${APP_NAME}-error-30dt.%d{yyyy-MM-dd}.%i
			</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>1024MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{0}:%L- %msg%n</pattern>
		</encoder>
	</appender>

	<!-- 根日志logger -->
	<root level="DEBUG">
		<appender-ref ref="APP-ERR" />
		<appender-ref ref="APP-INFO" />
		<appender-ref ref="STDOUT" />
	</root>

</configuration>

 

遇到问题(1)

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/shuang/maven_repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/shuang/maven_repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
log4j:WARN No appenders could be found for logger (com.alibaba.druid.pool.DruidDataSource).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

 上面的问题是因为存在相同的jar包,检查一下是否存在slf4j与log4j等相关重复jar包

 

遇到问题(2)

14:49:53,026 |-ERROR in ch.qos.logback.core.joran.conditional.IfAction - Could not find Janino library on the class path. Skipping conditional processing.
14:49:53,026 |-ERROR in ch.qos.logback.core.joran.conditional.IfAction - See also http://logback.qos.ch/codes.html#ifJanino
14:49:53,125 |-ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [STDOUT]. Did you define it below instead of above in the configuration file?
14:49:53,125 |-ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.

 上面的问题是缺少下面的jar包

   <!-- The org.codehaus.janino:commons-compiler:2.6.1 dependency -->
    <!-- will be automatically pulled in by Maven's transitivity rules -->
    <dependency>
        <groupId>org.codehaus.janino</groupId>
        <artifactId>janino</artifactId>
        <version>2.6.1</version>
    </dependency>

 

分享到:
评论

相关推荐

    logback中文文档pdf

    Logback 与 SLF4J 结合使用,提供了一个抽象层,使得应用程序可以轻松地切换到其他日志框架,如 Log4j 或 java.util.logging,而无需修改代码。SLF4J API 简洁且易于理解,使得日志记录成为一种轻量级任务。 在实际...

    logback所需jar包

    通过学习这些材料,你可以了解如何有效地配置和利用Logback,以及如何解决在实际项目中遇到的问题。 总结来说,Logback是一个强大的日志框架,其核心组件和API设计使得日志记录既高效又灵活。通过研究源码和使用...

    十个 log4j 转移到LogBack的理由

    8. **API 简洁性**:LogBack 的 API 设计得更加简洁和直观,与 SLF4J 的接口结合使用,使得日志记录更加高效且易于维护。 9. **可扩展性**:LogBack 的模块化设计允许开发者根据需求定制和扩展其功能,比如自定义...

    logback日志工具

    在遇到未捕获的异常时,logback可以自动记录堆栈跟踪信息,这对于调试和问题定位非常有帮助。 **5. 扩展性** Logback允许用户自定义Appender和Layout,以满足特定需求。例如,你可以创建一个将日志发送到云存储服务...

    logback jar

    日志是软件开发中的重要组成部分,它记录了应用程序运行时的详细信息,有助于开发者在遇到问题时进行调试和故障排查。Logback 是一个高效、可配置的日志框架,由 Ceki Gülcü 创建,他是早期流行日志框架 Log4j 的...

    spring boot使用logback实现多环境日志配置详解

    为了解决这一问题,需要采用logback-spring.xml文件替代logback.xml文件,并利用Spring Boot提供的配置机制,通过在logback-spring.xml中使用${}语法来引用application.yml中定义的属性。这样logback-spring.xml中的...

    slf4j+logback 于log4j+commons-logging大PK

    然而,随着时间的推移,Log4j的某些设计决策和性能问题使得开发者转向了更新的解决方案,比如Logback。Log4j的配置相对复杂,但其灵活性使其在许多项目中仍然占有一席之地。 Commons-Logging是Apache基金会的一个...

    SpringBoot之logback-spring.xml不生效的解决方法

    当使用logback作为日志框架时,通常我们会将配置文件放在`src/main/resources`目录下,命名为`logback-spring.xml`,这是因为Spring Boot默认支持`logback-spring.xml`,它能与Spring的自动配置机制集成。...

    Java-Spring-logging-slf4j-logback:#Spring日志记录slf4j Logback

    这些问题都可以通过调整Logback配置或使用Spring Boot的特性来解决。 总之,Spring Boot与SLF4J和Logback的集成为Java开发者提供了一种简单而强大的日志解决方案。通过理解和掌握这些工具的使用,你可以更好地管理...

    在logback.xml中自定义动态属性的方法

    为了解决这个问题,可以通过在logback.xml中配置动态属性,为每个实例的日志文件命名添加独特的标识,例如IP地址或UUID,或者将它们两者结合起来使用。这样,每个实例的日志就可以存储在不同的文件中,避免了冲突。 ...

    基于spring boot 日志(logback)报错的解决方式

    通过以上步骤,大多数基于Spring Boot的日志(logback)报错问题都能得到解决。如果问题依然存在,那么可能需要进一步检查Spring Boot的自动配置或者自定义日志配置,以确定是否有其他的配置冲突或错误。在开发过程中...

    Logback动态修改日志级别的方法

    Logback 是一个流行的 Java 日志框架,用于记录应用程序运行过程中的各种信息。它提供了高度的灵活性和可配置性,使得开发者能够根据需求调整日志输出级别。本文将深入探讨如何在运行时动态修改 Logback 的日志级别...

    logback:简单的积压实用程序

    8. **社区支持**:由于其广泛使用和强大的社区支持,遇到问题时,开发者可以在网上找到大量的解决方案和示例。 9. **文件名称列表解析**:提供的文件名“logback-master”可能是一个Logback项目的源码仓库,包括了...

    springMVC mybatis

    例如,当遇到问题时,可以通过查看Logback记录的日志,追踪到SpringMVC和MyBatis中的具体操作,从而定位并解决问题。 在"cloudview"这个项目中,可能是一个基于SpringMVC和MyBatis构建的云服务相关的Web应用,而...

    JSPSmart系统-权限管理与日志记录模块的设计与开发(源代码+论文).zip

    论文则详细阐述了设计思路、技术选型、实现过程以及遇到的问题与解决方案,为开发者提供了宝贵的实践经验和理论指导。 总结,JSPSmart系统通过精细的权限管理和详尽的日志记录,实现了对企业级应用系统的全面安全...

    日志myLogApp日志记录项目

    myLogApp的使用者可能利用grep、awk等命令行工具,或者可视化工具(如Kibana)来分析日志,解决问题。 10. **日志的最佳实践** - 不要过度日志:过多的日志会消耗资源,影响性能。 - 格式化日志:清晰的格式有利...

    scalatest_2.11.0-RC1-2.1.0.zip

    无论是在小型项目还是大型复杂系统中,`bugsnag-logback`都能帮助开发者快速定位和解决问题,从而提高软件质量,减少用户遇到问题的概率。对于任何使用Logback的Java开发者来说,这是一个值得尝试和采用的工具。

    强大的日志框架,能记录程序中出现的异常

    强大的日志框架不仅能够记录基本的错误信息,还能详细跟踪程序行为,提供丰富的上下文信息,帮助开发者快速定位并解决问题。 "强大的日志框架,能记录程序中出现的异常" 这个标题揭示了日志框架的核心功能之一——...

Global site tag (gtag.js) - Google Analytics