log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?【转】【补】

log4j本来设置了要打印行号与文件名的,结果有的能打印出来,有的却是乱码,查了些文档之后才发现,原来打印问题是因为编绎时没有编绎进去调试信息,所以没办法打印,好像有的系统又会显示(Unknown Source)

样例

错误样例

KingTool [2018-07-18 09:54:17,386]>>>INFO>>>[ com.kingtool.Student.study(?:?) ]-[student id 23 is studing Math]

正常样例

KingTool [2018-07-18 09:54:17,386]>>>INFO>>>[ com.kingtool.StudentService.study(StudentService.java:139) ]-[student id 23 is studing Math]

log4j.properties配置

log4j.rootLogger = WARN, console

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern = %-5p %d [%t] %c\: %m%n
log4j.appender.console.layout.ConversionPattern = KingTool [%d{yyyy-MM-dd HH:mm:ss,SSS}]>>>%p>>>[ %l ]-[%m] %x %n

ant编绎

如果用Ant编译,就在javac节点下添加debug="on"或debug="true"
<javac srcdir="src" destdir="bin" debug="on" > .....</javac>

log4j 行号与文件名打印问号 --http://www.blogjava.net/itspy/archive/2008/04/22/194686.html

Ant 的 javac标签--https://blog.csdn.net/dy_paradise/article/details/5974856

maven编绎

如果用Maven编译,就在<plugin>节点的<configurations>下添加<compilerArgs>节点如下:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
      <encoding>UTF-8</encoding>
      <compilerArgs>
        <arg>-g</arg>
      </compilerArgs>
    </configuration>
  </plugin>
</plugins>

log4j配置后行号乱码显示为?问号--http://www.cnblogs.com/zhangshiwen/p/6935248.htm

javac编绎

如果是用JAVAC编绎,那么直接加参数-g就可以了.

用法:javac <选项> <源文件>
其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告

原文地址:https://www.cnblogs.com/whatlonelytear/p/9328232.html

时间: 2024-11-10 08:52:35

log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?【转】【补】的相关文章

Visual Leak Detector(vld)无法显示内存泄露文件名与行号

使用VLD测有没内存泄露的时候,出现(File and line number not available): (Function name unavailable) 查看VS控制台,发现 已加载"C:/WINDOWS/system32/dbghelp.dll" 说明VS加载了WINDOWS的dll而不是最新的VLD的dbghelp.dll 解决方案: 只需把VLD 安装路径下的 dbghelp.dll拷贝到你的程序的Debug文件夹里 就轻松搞定! Visual Leak Detec

C语言文件名、行号、函数名的方法

一.前言 在后台程序运行出问题时,需要查看详尽的日志,C语言提供记录日志触发点文件名.行号.函数名的方法,关键是利用C99新增的预处理标识符__VA_ARGS__:先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. 二.ANSI C标准宏 __LINE__ // 在源代码中插入当前源代码行号 __FILE__ // 在源文件中插入当前源文件名 __DATE__ // 在源文件中插入当前的编译日期 __TIME__ //

Java如何取源文件中文件名和行号

package com.github.jdk; /**  * Java如何取源文件中文件名和行号  *   * {@code StackTraceElement}的定义详见文档  *   * @author doctor  *  * @time 2015年3月13日 上午9:16:16  */ public class StackTraceElementPractice { public static void main(String[] args) { StackTraceElement[] 

搜索当前目录下所有文件包含某关键词的文本/文件名/行号

工作中希望通过命令能够找到nginx的一堆conf文件中配置某个域名的conf的文件名:或者找读书笔记里面包含某个关键词的所有读书笔记markdown文档: 或者找到某个公司/作者/演员/tag的所有作品的文章,如果你像我一样,记性很烂,但只是记得某个关键词就想要找到以前的东西,那么看这篇就对了. 这篇文章基于Unix/Linux/MacOS环境,当然windows如果安装bash命令行也是可以的.通过find命令查找当前目录下所有带有某个字符串的文件名以及行号.或者上下文. 通过find命令查

C/C++ 打印文件名、行号、函数名的方法

转自:http://blog.csdn.net/cabinriver/article/details/8960119 今天跟踪一段开源代码的时候,因为对代码不太熟悉,所以要打印一些关键的信息.便顺手整理了一下这个能打印文件名.行号.函数名的宏. 1.打印文件名.行号.函数的两种方式 [cpp] view plain copy /************************************************************************** *  @Copyri

eclipse 括号对齐行号显示及字体调整

作者 : 卿笃军 一.括号对齐:指和C/C++里面一样,上下括号对齐~~~ 第一步:Project->preferences->Java->Code Style->Formatter 第二步:点击右边的New在profile name 里面随便填写一个名字,点击ok 选择标签页Braces 把所有的Same line 统统(除了最后一个Array initializer)改成Next line 保存即可 二.显示行号: 直接右击编辑框你想显示行号的位置,勾选"显示行号&q

EasyUI 1.3.6 行号显示不全

if((_6e4+"").length>2){  var mkm_rn_width = ((_6e4+"").length-2)*7+25;  if($('.datagrid-header-rownumber').width()!=mkm_rn_width){  $('.datagrid-header-rownumber').width(mkm_rn_width);  }  cc.push("<td class=\"datagrid-

给程序加入能打印文件名、行号、日期的日志信息,并设置debug开关

我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下.所以,很多人会选择使用宏定义的方式来输出调试语句. 比如,定义一个宏开关: #define __DEBUG 当需要调试的时候,使用语句: #ifdef __DEBUG printf(xxx); #

DevExpress控件使用经验总结- GridView列表行号显示操作

DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一些小的经验总结.总体来讲,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果.本文主要通过给出相应的例子以及相关界面效果来说明问题,希望大家能够从中获得好的知识和思路. 1. 应用Office2007和Office2010的界面主题 开始使用DevExpress的时候,发现程序界