You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (Jira)" <ji...@apache.org> on 2019/09/19 16:32:00 UTC

[jira] [Commented] (LOG4J2-2697) Priority of the Event is not calculated correctly

    [ https://issues.apache.org/jira/browse/LOG4J2-2697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16933562#comment-16933562 ] 

Ralph Goers commented on LOG4J2-2697:
-------------------------------------

Your configuration has 
{code:java}
    <CustomLevels>
        <CustomLevel name="EMERGENCY" intLevel="2" />
        <CustomLevel name="ALERT" intLevel="3" />
        <CustomLevel name="CRITICAL" intLevel="4" />
        <CustomLevel name="ERROR" intLevel="5" />
        <CustomLevel name="WARNING" intLevel="6" />
        <CustomLevel name="NOTICE" intLevel="7" />
        <CustomLevel name="INFORMAL" intLevel="8" />
        <CustomLevel name="DEBUG" intLevel="9" />
    </CustomLevels>
{code}
Log4j already has levels defined for ERROR and DEBUG so those two custom levels will be ignored.

Log4j's standard levels are OFF(0), FATAL(100), ERROR(200), WARN(300), INFO(400), DEBUG(500), and TRACE(600). When converting a custom level to a StandardLevel StandardLevel.java.getStandardLevel uses
{code:java}
 StandardLevel level = StandardLevel.OFF;
 for (final StandardLevel lvl : LEVELSET) {
   if (lvl.intLevel() > intLevel) { 
     break; 
   } level = lvl; 
 } 
 return level;
{code}
So in your case it will break out of the loop as soon as it hits FATAL because your values are all less than 100 and so it will always use a value of 0.

In short, you need to align your levels with Log4j's StandardLevel values.

> Priority of the Event is not calculated correctly
> -------------------------------------------------
>
>                 Key: LOG4J2-2697
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2697
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: API, Layouts
>    Affects Versions: 2.11.1
>         Environment: RedHat 7.6
> OpenJDK 11
>            Reporter: Jose Luis
>            Priority: Blocker
>         Attachments: 02-logEvent_customLevel.jpg, 03-TCPStream_All184Values.jpg, CSFLogConfigData.xml
>
>
> We are having a problem with the Priority of the event created by the log4j2 API.
>  * According to the [RFC 5424|https://tools.ietf.org/html/rfc5424] specification, the priority is calculated as:
>    *{{PRIORITY = ( FACILITY x 8) + SEVERITY}}*
>  * In our configuration file (CSFLogConfigData.xml attached) we set the *Facility = LOCAL7 (value = 23)* and several Custom Levels:
> *{{<CustomLevels>}}*
> *{{}}{{    <CustomLevel name="EMERGENCY" intLevel="2" />}}*
> *{{}}{{    <CustomLevel name="ALERT" intLevel="3" />}}*
> *{{}}{{    <CustomLevel name="CRITICAL" intLevel="4" />}}*
> *{{}}{{    <CustomLevel name="ERROR" intLevel="5" />}}*
> *{{}}{{    <CustomLevel name="WARNING" intLevel="6" />}}*
> *{{}}{{     <CustomLevel name="NOTICE" intLevel="7" />}}*
> *{{}}{{    <CustomLevel name="INFORMAL" intLevel="8" />}}*
> *{{}}{{    <CustomLevel name="DEBUG" intLevel="9" />}}*
> {{*</CustomLevels>*}}
>  * In our testing, we are provoking an Emergency Level event, as you can see in the screenshot attached (02-logEvent_customLevel)
>  * The priority expected in the event after log4j2 management should be
> {{    *PRIORITY = (23 x 8) + 2 = 186*}}
>  * But in the TCP Stream, all the events have *PRIORITY = 184* (screenshot attached 03-TCPStream_All184Values). In the screenshot the priority of some events can be seen, all of them with *PRIORITY = 184*, no matter the Severity Level of the event.
> We are seeing the Severity is not being added when calculating the priority. We have test with another facility, and the multiplication is ok, but in every case the Severity is not added.
>  
> Is this a known problem?
> There is something wrong with our configuration?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)