解决引用slf4j中Logger.info只打印出文字没有数据的问题

目录
  • slf4j Logger.info只打印出文字没有数据
    • 解决方案
  • 启用设置org.slf4j.Logger打印并输出日志
    • pom.xml配置
    • logback.xml配置
    • 程序调用

slf4j Logger.info只打印出文字没有数据

引的是 slf4j 包

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger logger = LoggerFactory.getLogger(TsfTest.class);
logger.info("打印参数:",map);

只能打印出:

2019-06-14 17:52:07.246 [http-apr-8080-exec-10] INFO c.q.m.p.b.rest.test - 打印参数:

解决方案

在第一个参数中加入花括号{ }即可。

logger.info("打印参数:{}",map);

解决!

启用设置org.slf4j.Logger打印并输出日志

在resouces目录下面新建logback.xml(此为Logback推荐目录)

内容配置如下

logback 分为两种设置:

1. 输出到控制台 STDOUT

2. 输出到文件 FILE

pom.xml配置

<properties>
    <slf4j.version>1.7.25</slf4j.version>
</properties>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>

logback.xml配置

下面的配置同时配置输出到文件和输出到控制台

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="3 seconds">
    <!--设置日志输出为控制台-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{userId}] [%X{requestId}] %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <!--设置日志输出为文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logFile.log</File>
        <rollingPolicy  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>logFile.%d{yyyy-MM-dd_HH-mm}.log.zip</FileNamePattern>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm:ss,SSS} [%thread] %-5level %logger{32} - %msg%n</Pattern>
        </layout>
    </appender>

    <root>
        <level value="DEBUG"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

程序调用

1.申明 logger 变量

private Logger logger = LoggerFactory.getLogger(LoginLogDao.class);

2.在程序中调用日志

logger.debug(INSERT_LOGIN_LOG_SQL);

官方介绍网址:https://logback.qos.ch/demo.html

下面为官网介绍

logback-classic with two appenders: a ConsoleAppender and a RollingFileAppender. The RollingFileAppender sends logging events to a file called logFile.log and will rollover the active file every minute. The old file will be renamed and compressed to a zip file. The ConsoleAppender will output the logging requests to the console, and shorten the logger names to gain space on the console window, without loss of legibility. For example, ch.qos.logback.demo.prime.NumberCruncherImpl will be abbreviated as c.q.l.d.prime.NumberCruncherImpl.

输出结果如下

isDebugEnabled true
2017-04-23 23:58:35,502 DEBUG [http-nio-8080-exec-6] (LoginLogDao.java:32) - INSERT INTO t_login_log(user_id,ip,login_datetime) VALUES(?,?,?)
2017-04-23 23:58:35,503 DEBUG [http-nio-8080-exec-6] (JdbcTemplate.java:869) - Executing prepared SQL update
2017-04-23 23:58:35,503 DEBUG [http-nio-8080-exec-6] (JdbcTemplate.java:616) - Executing prepared SQL statement [INSERT INTO t_login_log(user_id,ip,login_datetime) VALUES(?,?,?)]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决springmvc整合Mybatis的Log4j日志输出问题

    springmvc整合Mybatis的Log4j日志输出 当我们进行web开发的时候总是看到配置的log4j日志在控制台无法显示mybatis的主要是指sql.参数.结果,出现这种问题有两种情况: 第一种情况 下面文档描述的mybatis本身内置很多种日志框架使用,所以如果我们要用具体哪个日志框架,就需要进行相应mybatis配置,或者就是按照mybatis本身规则运行. 问题在这里文档:http://mybatis.github.io/mybatis-3/zh/logging.html 配置方

  • 使用log4j输出一个类的所有参数的值

    目录 log4j输出一个类的所有参数的值 log4j各参数打印输出内容 log4j输出一个类的所有参数的值 项目用到的是日志框架是slf4j+log4j,在使用的过程中,如果要输出一个元素的值,一般都是这样写 logger.info("当前登录人的姓名是:{}", userinfo.getName()); 这样就会输出:当前登录人的姓名是:张三 但是如果我想要输出一个类userinfo中所有的参数信息,比如说,姓名,年龄,电话等信息,如果这样就会出问题 logger.info(&quo

  • org.slf4j.Logger中info()方法的使用详解

    目录 org.slf4j.Logger中info()方法 如果info()方法参数为以下类型 使用范例1 使用范例2 如果info()方法参数如下 使用范例1 如果info()方法参数如下 使用范例1 log.info()传入多个参数的方法 org.slf4j.Logger中info()方法 如果info()方法参数为以下类型 public void info(String format, Object argArray[]) { if(logger.isInfoEnabled()) { For

  • 浅谈log4j的rootLogger及其他坑爹的地方

    目录 log4j的rootLogger及其他坑爹地方 经过试验发现!!!! 对于申明appender的包rootLogger的级别设置不起作用 log4j rootLogger配置 log4j.rootLogger=INFO,db语法为 log4j的rootLogger及其他坑爹地方 这里用的是org.apache.log4j.Logger log4j.rootLogger=error, stdout log4j.appender.appenderName=org.apache.log4j.As

  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    log4j输出多个自定义日志文件 如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: 复制代码 代码如下: log4j.rootLogger=DEBUG, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layo

  • 解决引用slf4j中Logger.info只打印出文字没有数据的问题

    目录 slf4j Logger.info只打印出文字没有数据 解决方案 启用设置org.slf4j.Logger打印并输出日志 pom.xml配置 logback.xml配置 程序调用 slf4j Logger.info只打印出文字没有数据 引的是 slf4j 包 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = LoggerFactory.getLogger(TsfTe

  • 解决pytorch下只打印tensor的数值不打印出device等信息的问题

    torch.Tensor类型的数据loss和acc打印时 如果写成以下写法 print('batch_loss: '+str(loss.data)+'batch acc: '+str(acc.data)) 则不仅会打印出loss和acc的值,还会打印出device信息和 tensor字样,如下: 如果仅想打印出数值,使得打印出的信息更加简洁 则要用以下写法 print('batch_loss: {:.3f} batch acc: {:.3f}'.format(loss.data, acc.dat

  • ScrollView中嵌入ListView只显示一条的解决办法

    通常情况下我们不会在ScrollView中嵌套ListView,但是如果面试官非让我嵌套的话也是可以的. 在ScrollView添加一个ListView会导致listview控件显示不全,通常只会显示一条,究竟是什么原因呢? 两个控件的滚动事件冲突导致.所以需要通过listview中的item数量去计算listview的显示高度,从而使其完整展示,如下提供一个方法供大家参考. 解决办法如下所示: lv = (ListView) findViewById(R.id.lv); adapter = n

  • 在python中logger setlevel没有生效的解决

    在logging中,Logger's level 的默认等级为warning 所以虽然在handler中setlervel了,Logger's level 和Handler's Level 但是level取较高的那个(待校验) 所以日志的level 为warning 解决此问题可以采用 logging.root.setLevel(logging.NOTSET) 完整源码如下图: import logging class loggerr(object): def __init__(self,log

  • 解决vue项目中某一页面不想引用公共组件app.vue的问题

    Vue 单页面应用 把公共组件放在 app.vue 但是我希望某个页面没有这些公共组件怎么办(比如登陆页面)每个页面都有 导航栏 但是我希望 登陆页面只有一个背景色和一个登陆框 没有导航栏 那应该怎样设置呢? vue中文文档:点击进入 在根组件中:在导航栏使用v-show判断当前路由是否是不需要的组件来完成页面: <template> <div id="app"> <home-header v-show="!(path ==='/') "

  • 详谈异步log4j2中的location信息打印问题

    目录 异步log4j2的location信息打印问题 说下解决 1.全异步 同步异步混合 log4j2支持异步打印提高打印输出速度 pom依赖添加 全局模式2两种 局部模式 AsyncLogger 异步log4j2的location信息打印问题 背景:项目改造过程中将log4j2改成异步,发现行号没有打印,于是扒了下官方文档,大概陈述下: 先说一下这个问题是怎么解决的,然后稍微扩展一下其他配置,有兴趣的可以往下看或者溜一遍官方文档 说下解决 在<AsyncLogger>标签中配置include

  • 使用ngrok+express解决本地环境中微信接口调试问题

    在微信项目的开发的时候,经常需要对微信jssdk提供的接口进行调试,比如说录音, 分享 ,上传图像等接口,但是微信jssdk要求绑定安全域名才能使用其提供的一系列功能 , 而在开发环境中使用localhost或者本地ip无法完成域名的认证和绑定, 所以无法在本地调试 .当然有一种迫不得已方法 ,就是在本地开发完 ,打包发到公司的测试服务器上 ,利用测试服务器认证后的域名进行调试,每次改动,调试都要发一遍测试,显然这种方法非常麻烦且很不科学,所以这篇文章就针对这个问题介绍一下如何利用ngrok和e

  • 解决在Vue中使用axios用form表单出现的问题

    vue中使用Axios第三方库,采用形式提交,参数格式为multipart /格式数据 ,请求参数变为对象格式的解决办法.(推荐第二种方法) 提交数据的四种编码方式 一,应用/ X WWW的窗体-urlencoded 这应该是最常见的后编码方式,一般的表单提交默认以此方式提交.大部分服务器语言对这种方式都有很好的支持.在PHP中,可以用$ _ POST ["钥匙"]的方式获取到关键的值,在节点中我们可以使用查询字符串中间件对参数进行分离 app.post("/server&q

  • 浅谈slf4j中的桥接器是如何运作的

    阅读分析 slf4j 的日志源码,发现其中涵盖了许多知识点和优秀的设计,关键它们都是活生生的实践案例.写成系列文章与大家分享,欢迎持续关注. 前言 在日志框架 slf4j 中有一组项目,除了核心的 slf4j-api 之外,还有 slf4j-log4j12.slf4j-jdk14 等项目.这一类项目统称桥接器项目,针对不同的日志框架有不同的桥接器项目. 在使用 logback 日志框架时,并没有针对的桥接器,这是因为 logback 与 slf4j 是一个作者所写,在 logback 中直接实现

  • .Net解决引用程序集没有强名称报错

    目录 一.什么是强名称 为什么要使用强名称签名 二.如何设置强名称 1.应用程序有源代码 1.生成公钥 2.设置签名公钥 2.应用程序没有源代码 1.打开SDK命令提示窗口 2.创建一个新的随机密钥对 3.反编译目标程序集 4.重新编译,附带强命名参数 5.验证签名信息 6.重新引用 一.什么是强名称 强名称是一个由程序集的标识组成并通过公钥和数字签名(针对该程序集生成)加强的名称,其中的标识包括程序集的简单文本名称.版本号和区域性信息. 由于程序集清单包含构成程序集实现的所有文件的文件散列,因

随机推荐