为什么日志文件有很多NUL字符?

时间:2016-07-20 02:18:47

标签: java logging slf4j

问题:

185  INFO [2016-07-20 08:24:50,393] ({RemoteInterpreter async opener} RemoteInterpreter.java[open]:115) - Create remote interpreter org.apache.zeppelin.spark.SparkInterpreter
186  INFO [2016-07-20 08:24:50,437] ({qtp691447552-1500} NotebookRestApi.java[getJobs]:163) - getjobs user ***@***.com, productUser mamm01
187  INFO [2016-07-20 08:25:05,765] ({qtp691447552-1483} NotebookRestA^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ INFO [2016-07-20 08:25:50,143] ({qtp691447552-1500} NotebookRestApi.java[bind]:119) - binding user ***@***.com to settingId ***@***.com-__-mamm01-__-21
188  INFO [2016-07-20 08:25:50,146] ({RemoteInterpreter async opener} RemoteInterpreterProcess.java[reference]:103) - Run interpreter process [/home/hadoop/zeppelin/zeppelin-0.5.6-incubating/bin/interpreter.sh,     -d, /home/hadoop/zeppelin/zeppelin-0.5.6-incubating/interpreter/spark, -p, 35297]

' ^ @'在vim编辑器中是' \ 0'(NUL)。第187行不完整。最后一部分丢失并被' \ 0'覆盖。我的日志文件中有很多地方看起来像这样。这太奇怪了。

我的log4j.properties:

log4j.rootLogger = INFO, dailyfile

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n

log4j.appender.dailyfile.DatePattern=.yyyy-MM-dd
log4j.appender.dailyfile.Threshold = INFO
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = ${zeppelin.log.file}
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n

log4j.appender.dailyfile.Append=true
log4j.appender.dailyfile.ImmediateFlush=true

我尝试将Append和ImmediateFlush设置为true,但它没有帮助。

我的pom.xml:

<slf4j.version>1.7.21</slf4j.version>
<log4j.version>1.2.17</log4j.version>

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

我尝试更新slf4j和log4j版本,但它没有帮助。

我调用slf4j API的模式:

public class NotebookRestApi {
  private static final Logger LOG = LoggerFactory.getLogger(NotebookRestApi.class);
  ...
    LOG.info("binding user {} to settingId {}", email, settingId(email, product, hiveSiteId));

我的应用程序使用JAX-RS和嵌入式码头,我不知道它是否与问题有关。我的另一个怀疑是,它是否可能由多个类加载器引起?

0 个答案:

没有答案