<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%X{traceId}] [%thread] %-5level %logger{36} %marker - %msg%n</pattern>
</encoder>
</appender>
<!-- Root Config -->
<root level="${log_level:-INFO}">
<appender-ref ref="ASYNC-SERVICE"/>
<appender-ref ref="STDOUT"/>
</root>
def setLogLevel(value: Level, loggerName: String = org.slf4j.Logger.ROOT_LOGGER_NAME) = {
val logger = LoggerFactory.getLogger(loggerName).asInstanceOf[Logger]
logger.setLevel(LogbackLevel.valueOf(value.toString))
}
我试着在附加程序上操作级别过滤器,但似乎没有太大作用
我最后做的是让根级别始终在Debug处日志,并为每个附加程序提供阈值过滤器:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>%d [%X{traceId}] [%thread] %-5level %logger{36} %marker - %msg%n</pattern>
</encoder>
</appender>
<!-- Root Config -->
<root level="${log_level:-DEBUG}">
<appender-ref ref="ASYNC-SERVICE"/>
<appender-ref ref="STDOUT"/>
</root>
然后我使用groovy logback api中的ConfigurationDelegate类来查询附加项
val context = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
val configuration = {
val delegate = new ConfigurationDelegate
delegate.setContext(context)
delegate
}
/**
* Sets the log level for a particular appender
* @param value
* @param appenderName
*/
def setAppenderLevel(value: Level, appenderName: String) = {
appenders.find(_.getName == appenderName) match {
case Some(appender) =>
val filters = appender.getCopyOfAttachedFiltersList
filters.find(_.isInstanceOf[ThresholdFilter]).foreach(m => m.asInstanceOf[ThresholdFilter].setLevel(value.toString))
case None =>
}
}
我查找了阈值筛选器并手工设置了值。
编辑 删除这一行后,将在控制台上打印日志。但是,我看不到正在创建的文件。
对不起,我仍然是小新在这方面,只是万一有代码有人想看到我否定这里是整个代码要点嵌入 我花了2个星期建立这个应用程序,并已卡在这个过滤在过去的2天。我需要有这个应用程序MVP明天下午演示在一个就业活动为最近的毕业生,这是仅剩的2件事之一。 我没有足够的代表赏金,但任何帮助或建议都很感激
问题内容: 我想要一个log4j配置,这样日志文件名应该像$ {System-name} log.log。也就是说,如果该应用程序在任何系统上启动,则无需更改配置文件或代码。它应该生成提到的日志文件名。谢谢。 问题答案: 我这样做: 1)通过以下方式初始化记录器: 2)在log4j.xml中我使用变量:
我分别在和上找到了筛选器的解决方案,但我希望将它们结合起来。有可能吗?
问题内容: 我想要的是类似于文档中的此示例的示例,但是具有唯一的输入,可以通过“ any”,“ name”或“ phone”属性来扮演过滤的三个角色,角色的更改是通过单击锚点完成的。这是准备好的代码http://jsfiddle.net/ubugnu/QuyCU/如何动态更新ng- model属性? 的HTML JS 问题答案: 您可以定义如下:动态更改应绑定到哪个变量(另一个变量在哪里)。 参见
我有一个应用程序,其中包含许多在数据库中创建数据的组件。每个组件记录创建数据时所做的事情。有很多这样的组件,而且应用程序非常灵活,因此每次运行时不必总是执行相同的一组数据创建组件。 目前,所有内容都记录到一个文件中,这会生成一些开始变得不可管理的文件。我希望每个组件都可以登录到一个文件,该文件的名称描述了编写它的组件-应该登录到。 我见过的大多数解决方案似乎都假设不同的记录器是静态的,所以可以按名