[ 
https://issues.apache.org/jira/browse/LOG4J2-1509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Howes updated LOG4J2-1509:
-------------------------------
    Description: 
When I use the JSONLayout with 'complete=true' to write to a file, the 
resulting file cannot be parsed by either json.simple or Gson

Two things appear out of the ordinary to me
1) the terminating "]" always has a blank line inserted before it in to the 
file.
2) Windows style CR-LF seem to be being used for the line separators.

The JSON is written to the file is as follows :
{panel}
[^M
{
  "timeMillis" : 1470831244334,
  "thread" : "main",
  "level" : "DEBUG",
  "loggerName" : "daveLoggingCalculatorService",
  "message" : "LoggingCalculatorService Entering add ",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : {
    "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
    "loginId" : "Paul Kossoff"
  },
  "threadId" : 1,
  "threadPriority" : 5
}^M
, {
  "timeMillis" : 1470831244406,
  "thread" : "main",
  "level" : "DEBUG",
  "loggerName" : "dave.LoggingCalculatorService",
  "message" : "LoggingCalculatorService Exiting add",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : {
    "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
    "loginId" : "Paul Kossoff"
  },
  "threadId" : 1,
  "threadPriority" : 5
}^M
^M
]^M
{panel}

Both parsers fail at the line immediately preceding the terminating "]" - at 
first sight it would appear that a line with only a ^M on it is identified as 
being the end of stream when reading using a java.io.BufferedReader.

The following code produces the following stacktrace:
{code}
List<LinkedTreeMap> logContent = (List<LinkedTreeMap>)gson.fromJson(new 
FileReader(LOG_FILE_NAME), Object.class);
{code}
{panel}
com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 
32 column 1
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at com.google.gson.Gson.fromJson(Gson.java:741)
        at .....
{panel}

If I manually remove the ^M from the file, but leave the empty line, the file 
can be parsed correctly.

I'm not sure if this is a problem in the JSON parsers, the log4j2 JSONAppender, 
or my ability to process files correctly in java .


log4j2.yaml
{panel}
Configuration:
  status: warn

  Appenders:
    Console:
      name: Console
      target: SYSTEM_OUT
      JSONLayout:
        Properties: true
        Complete: true
        Charset: ISO-8859-1

    File:
      name: File
      fileName: "test.log"
      JSONLayout:
        Properties: true
        Complete: true
        Charset: ISO-8859-1
       
  Loggers:
    Root:
      level: debug
      AppenderRef:
        - ref: Console
        - ref: File 
{panel}

pom.xml ( dependencies section )
{panel}
        <properties>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                        <slf4j.version>1.7.6</slf4j.version>
                        <log4j.version>2.6.2</log4j.version> 
        </properties>

        <dependencies>
                <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <version>4.12</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjrt</artifactId>
                        <version>1.8.7</version>
                </dependency>

                <dependency>
                        <groupId>org.mockito</groupId>
                        <artifactId>mockito-all</artifactId>
                        <version>1.10.19</version>
                </dependency>

                <dependency>
                        <groupId>com.google.code.gson</groupId>
                        <artifactId>gson</artifactId>
                        <version>2.2.4</version>
                </dependency>
                

                
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
  </dependency>
  <!-- Binding for Log4J -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>${log4j.version}</version>
  </dependency>
  <!-- Log4j API and Core implementation required for binding -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>${log4j.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j.version}</version>
  </dependency>         
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.1</version>
</dependency>           
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.5.0</version>
</dependency>           
                
                <dependency>
                        <groupId>org.powermock</groupId>
                        <artifactId>powermock-core</artifactId>
                        <version>1.6.5</version>
                </dependency>
                <dependency>
                        <groupId>org.powermock</groupId>
                        <artifactId>powermock-api-mockito</artifactId>
                        <version>1.6.5</version>
                </dependency>
                <dependency>
                        <groupId>org.powermock</groupId>
                        <artifactId>powermock-module-junit4</artifactId>
                        <version>1.6.5</version>
                </dependency>

        </dependencies>
{panel}

  was:
When I use the JSONLayout with 'complete=true' to write to a file, the 
resulting file cannot be parsed by either json.simple or Gson

Two things appear out of the ordinary to me
1) the terminating "]" always has a blank line inserted before it in to the 
file.
2) Windows style CR-LF seem to be being used for the line separators.

The JSON is written to the file is as follows :
{panel}
[^M
{
  "timeMillis" : 1470831244334,
  "thread" : "main",
  "level" : "DEBUG",
  "loggerName" : "daveLoggingCalculatorService",
  "message" : "LoggingCalculatorService Entering add ",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : {
    "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
    "loginId" : "Paul Kossoff"
  },
  "threadId" : 1,
  "threadPriority" : 5
}^M
, {
  "timeMillis" : 1470831244406,
  "thread" : "main",
  "level" : "DEBUG",
  "loggerName" : "dave.LoggingCalculatorService",
  "message" : "LoggingCalculatorService Exiting add",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : {
    "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
    "loginId" : "Paul Kossoff"
  },
  "threadId" : 1,
  "threadPriority" : 5
}^M
^M
]^M
{panel}

Both parsers fail at the line immediately preceding the terminating "]" - at 
first sight it would appear that a line with only a ^M on it is identified as 
being the end of stream when reading using a java.io.BufferedReader.

The following code produces the following stacktrace:
{code}
List<LinkedTreeMap> logContent = (List<LinkedTreeMap>)gson.fromJson(new 
FileReader(LOG_FILE_NAME), Object.class);
{code}
{panel}
com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 
32 column 1
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at com.google.gson.Gson.fromJson(Gson.java:741)
        at .....
{panel}

If I manually remove the ^M from the file, but leave the empty line, the file 
can be parsed correctly.

I'm not sure if this is a problem in the JSON parsers, the log4j2 JSONAppender, 
or my ability to process files correctly in java .


> Log4j2 JSONLayout is not parseable on OSX
> -----------------------------------------
>
>                 Key: LOG4J2-1509
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1509
>             Project: Log4j 2
>          Issue Type: Question
>          Components: Layouts
>    Affects Versions: 2.6.2
>         Environment: Darwin DaveH.local 15.4.0 Darwin Kernel Version 15.4.0: 
> Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
> Java version "1.8.0_51"
> Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
> Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
>            Reporter: Dave Howes
>            Priority: Minor
>
> When I use the JSONLayout with 'complete=true' to write to a file, the 
> resulting file cannot be parsed by either json.simple or Gson
> Two things appear out of the ordinary to me
> 1) the terminating "]" always has a blank line inserted before it in to the 
> file.
> 2) Windows style CR-LF seem to be being used for the line separators.
> The JSON is written to the file is as follows :
> {panel}
> [^M
> {
>   "timeMillis" : 1470831244334,
>   "thread" : "main",
>   "level" : "DEBUG",
>   "loggerName" : "daveLoggingCalculatorService",
>   "message" : "LoggingCalculatorService Entering add ",
>   "endOfBatch" : false,
>   "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
>   "contextMap" : {
>     "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
>     "loginId" : "Paul Kossoff"
>   },
>   "threadId" : 1,
>   "threadPriority" : 5
> }^M
> , {
>   "timeMillis" : 1470831244406,
>   "thread" : "main",
>   "level" : "DEBUG",
>   "loggerName" : "dave.LoggingCalculatorService",
>   "message" : "LoggingCalculatorService Exiting add",
>   "endOfBatch" : false,
>   "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
>   "contextMap" : {
>     "id" : "5ca2d4d5-756b-4a79-80d2-dba255fa4536",
>     "loginId" : "Paul Kossoff"
>   },
>   "threadId" : 1,
>   "threadPriority" : 5
> }^M
> ^M
> ]^M
> {panel}
> Both parsers fail at the line immediately preceding the terminating "]" - at 
> first sight it would appear that a line with only a ^M on it is identified as 
> being the end of stream when reading using a java.io.BufferedReader.
> The following code produces the following stacktrace:
> {code}
> List<LinkedTreeMap> logContent = (List<LinkedTreeMap>)gson.fromJson(new 
> FileReader(LOG_FILE_NAME), Object.class);
> {code}
> {panel}
> com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at 
> line 32 column 1
>       at com.google.gson.Gson.fromJson(Gson.java:813)
>       at com.google.gson.Gson.fromJson(Gson.java:741)
>       at .....
> {panel}
> If I manually remove the ^M from the file, but leave the empty line, the file 
> can be parsed correctly.
> I'm not sure if this is a problem in the JSON parsers, the log4j2 
> JSONAppender, or my ability to process files correctly in java .
> log4j2.yaml
> {panel}
> Configuration:
>   status: warn
>   Appenders:
>     Console:
>       name: Console
>       target: SYSTEM_OUT
>       JSONLayout:
>         Properties: true
>         Complete: true
>         Charset: ISO-8859-1
>     File:
>       name: File
>       fileName: "test.log"
>       JSONLayout:
>         Properties: true
>         Complete: true
>         Charset: ISO-8859-1
>        
>   Loggers:
>     Root:
>       level: debug
>       AppenderRef:
>         - ref: Console
>         - ref: File 
> {panel}
> pom.xml ( dependencies section )
> {panel}
>       <properties>
>               
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>                       <slf4j.version>1.7.6</slf4j.version>
>                       <log4j.version>2.6.2</log4j.version> 
>       </properties>
>       <dependencies>
>               <dependency>
>                       <groupId>junit</groupId>
>                       <artifactId>junit</artifactId>
>                       <version>4.12</version>
>                       <scope>test</scope>
>               </dependency>
>               <dependency>
>                       <groupId>org.aspectj</groupId>
>                       <artifactId>aspectjrt</artifactId>
>                       <version>1.8.7</version>
>               </dependency>
>               <dependency>
>                       <groupId>org.mockito</groupId>
>                       <artifactId>mockito-all</artifactId>
>                       <version>1.10.19</version>
>               </dependency>
>               <dependency>
>                       <groupId>com.google.code.gson</groupId>
>                       <artifactId>gson</artifactId>
>                       <version>2.2.4</version>
>               </dependency>
>               
>               
>   <dependency>
>     <groupId>org.slf4j</groupId>
>     <artifactId>slf4j-api</artifactId>
>     <version>${slf4j.version}</version>
>   </dependency>
>   <!-- Binding for Log4J -->
>   <dependency>
>     <groupId>org.apache.logging.log4j</groupId>
>     <artifactId>log4j-slf4j-impl</artifactId>
>     <version>${log4j.version}</version>
>   </dependency>
>   <!-- Log4j API and Core implementation required for binding -->
>   <dependency>
>     <groupId>org.apache.logging.log4j</groupId>
>     <artifactId>log4j-api</artifactId>
>     <version>${log4j.version}</version>
>   </dependency>
>   <dependency>
>     <groupId>org.apache.logging.log4j</groupId>
>     <artifactId>log4j-core</artifactId>
>     <version>${log4j.version}</version>
>   </dependency>               
> <dependency>
>     <groupId>com.fasterxml.jackson.core</groupId>
>     <artifactId>jackson-core</artifactId>
>     <version>2.8.1</version>
> </dependency>         
> <dependency>
>     <groupId>com.fasterxml.jackson.core</groupId>
>     <artifactId>jackson-databind</artifactId>
>     <version>2.8.1</version>
> </dependency>
> <dependency>
>     <groupId>com.fasterxml.jackson.dataformat</groupId>
>     <artifactId>jackson-dataformat-yaml</artifactId>
>     <version>2.5.0</version>
> </dependency>         
>               
>               <dependency>
>                       <groupId>org.powermock</groupId>
>                       <artifactId>powermock-core</artifactId>
>                       <version>1.6.5</version>
>               </dependency>
>               <dependency>
>                       <groupId>org.powermock</groupId>
>                       <artifactId>powermock-api-mockito</artifactId>
>                       <version>1.6.5</version>
>               </dependency>
>               <dependency>
>                       <groupId>org.powermock</groupId>
>                       <artifactId>powermock-module-junit4</artifactId>
>                       <version>1.6.5</version>
>               </dependency>
>       </dependencies>
> {panel}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to