相关疑难解决方法(0)

Logback:如何仅将错误记录到文件中

我已经阅读了2小时的logback手册,仍然无法想象如何做我需要的.

它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括ERROR)记录到控制台.

这是我的logcat.xml文件的根部分:

    <root level="TRACE" >
        <appender-ref ref="CONSOLE_APPENDER" />
        <appender-ref ref="FILE_APPENDER" />
    </root>
Run Code Online (Sandbox Code Playgroud)

此配置的问题是它将每个级别> = TRACE记录到两个appender.

我可以让root用户只用控制台,并定义一个文件记录器:

    <logger name='file_logger' level='ERROR' >
        <appender-ref ref="FILE_APPENDER" />
    </logger>
Run Code Online (Sandbox Code Playgroud)

但是我必须像这样调用普通记录器:

LoggerFactory.getLogger(ClientClass.class);
Run Code Online (Sandbox Code Playgroud)

和文件记录器这样:

LoggerFactory.getLogger("file_logger");
Run Code Online (Sandbox Code Playgroud)

我不想为每个班级选择记录器.我只想使用class as参数从工厂获取根记录器,并根据级别让它做正确的事情.

这可能吗?

java logging logback slf4j

11
推荐指数
2
解决办法
1万
查看次数

Spring Boot JDBC模板SQL日志

我正在尝试使用params for Spring Boot JDBC进行日志SQL查询,但它没有在日志中打印详细信息.我正在使用Spring Boot 1.5.8版本.请帮我解决这个问题.

application.properties:

spring.datasource.url=url
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

logging.level.org.springframework.jdbc.core.JdbcTemplate=debug

spring.datasource.type = com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=2
Run Code Online (Sandbox Code Playgroud)

库:

@Repository
public class DataRepository {
    private static Logger log = LoggerFactory.getLogger(DataRepository.class);

    @Autowired
    private NamedParameterJdbcTemplate jdbcTemplate;

    public Data findDataObjet() throws Exception {

        Map<String, Object> parameters = new HashMap<>();
        parameters.put("id1", "mike");
        parameters.put("id2", new Long(1));

        String sqlString = "select * from table1 where id1 = ":id" and id2 = :id2";
        log.info("Query:" + sqlString);//this log is printing

        Data extObj = jdbcTemplate.query(sqlString, parameters, (rs) -> { …
Run Code Online (Sandbox Code Playgroud)

java log4j spring-jdbc spring-boot

6
推荐指数
2
解决办法
1万
查看次数

具有 logback 条件的多个根记录器

参考:Logback的配置

我的配置可以包含 ...at most one <root> element...

但是后来在同一个文档中,在讨论条件时,我看到了这一点:

<configuration debug="true">
  <if condition='property("HOSTNAME").contains("torino")'>
    <then>
      <appender name="CON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d %-5level %logger{35} - %msg %n</pattern>
        </encoder>
      </appender>
      <root> <------ root logger #1
        <appender-ref ref="CON" />
      </root>
    </then>
  </if>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${randomOutputDir}/conditional.log</file>
    <encoder>
      <pattern>%d %-5level %logger{35} - %msg %n</pattern>
   </encoder>
  </appender>

  <root level="ERROR"> <------ root logger #2
     <appender-ref ref="FILE" />
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

注意有两个<root>元素!我很困惑,因为我没有看到任何<else>元素,我会假设 FILE 附加程序和第二个根记录器仍在运行,即使主机名是“torino”。

这是一个如何有效的例子?为什么<root>在这种情况下允许两个记录器,而一个不在一个<if>或一个<else>

我错过了什么???

java logging logback slf4j

4
推荐指数
1
解决办法
1861
查看次数

标签 统计

java ×3

logback ×2

logging ×2

slf4j ×2

log4j ×1

spring-boot ×1

spring-jdbc ×1