我们正在使用pax-runner 运行OSGI捆绑软件。我们正在通过slf4j使用logback进行日志记录。
问题是logback试图在类路径中查找logback.xml,但是在pax-runner中应该将logback.xml放在哪里,以便pax-runner相应地配置logback?
我曾尝试使用JoranConfigurator加载包类路径中包含的logback.xml,但它假定类路径为包在其中运行的容器(在我的情况下,它是放置所有包罐的Runner文件夹)。
任何帮助,将不胜感激。
非常感谢。
我们在当前项目中使用log4j + commons-logging.现在我们从log4j的到的logback mirgrating,所以我们只使用替换log4j.properties用logback.xml或我们必须转换到log4j的SLF4J?
我在tomcat上使用Logback(7.0.37).我想配置logback,它可以为我编写Web可访问的日志文件,但我甚至可以将其配置为在控制台上写入.我无法在控制台上格式化日志消息.它总是以默认格式和异常返回给我.
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
这是我的logback-access.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
<appender name="RootFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>testing</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>testing.%i</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>12</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1MB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %m%n</pattern>
</layout>
</encoder>
</appender>
<appender name="RootConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-6level- %logger{36}: %msg%n</pattern>
</encoder>
</appender>
<appender-ref ref="RootFileAppender"/>
<appender-ref ref="RootConsoleAppender"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)
使用此配置,每当有对我的服务器的http请求时,我都会收到异常,如下所示:
18:08:19,951 |-ERROR in ch.qos.logback.core.ConsoleAppender[RootConsoleAppender] - Appender [RootConsoleAppender] failed to append. java.lang.ClassCastException: ch.qos.logback.access.spi.AccessEvent cannot be cast to ch.qos.logback.classic.spi.ILoggingEvent
at java.lang.ClassCastException: ch.qos.logback.access.spi.AccessEvent cannot …Run Code Online (Sandbox Code Playgroud) 我在其中添加了自己的SUMMARY_APPENDER,创建了一个AsyncAppender.
ASYNC Appender如下
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>2</discardingThreshold>
<appender-ref ref="SUMMARY_APPENDER" />
<!-- <appender-ref ref="PROCESSING" /> -->
</appender>
Run Code Online (Sandbox Code Playgroud)
我创建了另一个SUMMARY_APPENDER
<appender name="SUMMARY_APPENDER"
class="com.my.test.logger.async.MyRollingAppender">
<file>./logs/summary.log</file>
<rollingPolicy class="com.my.test.logger.async.MyTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>./logs/%d{yyyy-MM-dd,aux}/summary.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<TimeBasedFileNamingAndTriggeringPolicy
class="com.my.test.logger.async.MySizeTimeBasedPolicy">
<maxFileSize>10MB</maxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>
%d{ISO8601} [%t] %p %c %L - %m%n
</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
RollingPolicy由我的Custom Appenders正确扩展.
我已将其导出为带有logback.xml的自定义jar.
我将它添加到新java项目的classpath中.
程序如下,我创建了TestLogger1,2 ... 5并运行它们.
public class TestingLogger {
private static Logger log = LoggerFactory.getLogger(TestingLogger.class);
public static void main(String[] args) {
LoggerContext …Run Code Online (Sandbox Code Playgroud) 我目前正从log4j迁移到logback,并使用他们在logback主页中提供的转换器转换了我的log4j.properties文件.但我在我的模式上得到一些奇怪的错误,我无法弄清楚它要我做什么:
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="UTF-8"?> <!-- For assistance related to logback-translator or configuration --> <!-- files in general, please contact the logback user mailing list --> <!-- at http://www.qos.ch/mailman/listinfo/logback-user --> <!-- --> <!-- For professional support please see --> <!-- http://www.qos.ch/shop/products/professionalSupport --> <!-- --> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{ISO8601} [%p] [%C{1},%M(),%L] - %m%n</pattern> </encoder> </appender> <appender name="R" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> <File>/log/debug.log</File> <encoder> <pattern>%d{ISO8601} %15.15t [%p] [%C{1},%M():%L] - %m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>1</maxIndex> <FileNamePattern>/log/debug.log.%i</FileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>100KB</MaxFileSize> </triggeringPolicy> </appender> …
我用于logback记录Java应用程序。我如何使用以下方法处理我的应用程序中的所有异常logback
我的测试配置
<appender name="exceptions" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>java.lang.Exception.class.isInstance(throwable)</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
</filter>
<file>exceptions.log</file>
<append>true</append>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud) 我有一个spring-boot应用程序,在application.yml中具有以下配置
server:
contextPath: /rti
tomcat:
access-log-enabled: true
access-log-pattern: "%h %l %u %t \"%r\" %s %b %D"
basedir: tomcat
Run Code Online (Sandbox Code Playgroud)
这会提示创建访问日志tomcat/logs/access_log.2015-02-12.txt.
我希望能够配置创建访问日志的位置和命名内容; 但经过多次搜索,我开始认为这是不可能的.有谁知道如何实现这一目标?
应用程序日志记录在logback.xml中使用logback和配置正常工作
我已经配置了logback文件来获取类名,方法名和行号.
<pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %class{36}.%M %L - %msg%n </pattern>
Run Code Online (Sandbox Code Playgroud)
我想在输入和现有方法时打印日志消息.我怎么能使用info()方法在类中做到这一点.我使用下面的代码.但它没有打印出我想要的东西.
我使用org.slf4j.Logger和Logback日志记录
LOG.info("Entering " + );
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
14:41:48.097 [main] INFO c.a.j.orgchart.CsvPersonReader - Entering
Run Code Online (Sandbox Code Playgroud)
我想打印这样的东西:
14:41:48.097 [main] INFO c.a.j.orgchart.CsvPersonReader.[MethodName] [Linenumber] - Entering
Run Code Online (Sandbox Code Playgroud) 有没有办法禁用Spring启动日志并仅使用logger.info或logger.debug语句打印我在程序中提供的日志.我的意思是我只想记录我在程序中给出的日志语句,而不是其他任何内容.我使用spring boot提供的默认日志系统.如果需要,我也可以更改为log4j或log4j2.使用spring-boot 1.2.7版.换句话说,就像logging.level.org.springframework一样,可以用来记录spring相关的日志,有没有像logging.level.applicationlevel那样单独获取应用程序(Java logger语句)日志的方法
有没有办法以编程方式设置它们?
我想为特定测试类(使用SpringJUnit4ClassRunner和@SpringApplicationConfiguration)设置日志级别,但不是所有测试类都设置日志级别,并且没有针对每个组合的单独属性文件.
我尝试定义一个非懒惰的bean PropertySource来为环境添加一个新的 ; 该方法被调用,但没有效果.
@Bean
@Lazy(false)
public PropertySource testProperties(ConfigurableEnvironment environment) {
PropertySource properties = new MapPropertySource("testProperties", Collections.singletonMap(
"logging.level.org.springframework.security", "DEBUG"
));
environment.getPropertySources().addFirst(properties);
return properties;
}
Run Code Online (Sandbox Code Playgroud)