gentics / mesh-incubator

Project which is home for planned enhancements for Gentics Mesh
3 stars 0 forks source link

Update default logback.xml #5

Open deckdom opened 5 years ago

deckdom commented 5 years ago

Problem

The default logback.xml from Mesh could use an Update in my Opinion. So far, everything related to Mesh is getting logged into a single file.

Which would be somewhat fine, if it would not also contain way too much noise. That noise is:

A Log Entry for:

A Error/Full stack-trace for:

ERROR [ContextImpl.java:345] - Unhandled exception
java.lang.IllegalStateException: Response is closed
        at io.vertx.core.http.impl.HttpServerResponseImpl.checkValid(HttpServerResponseImpl.java:548) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.http.impl.HttpServerResponseImpl.end0(HttpServerResponseImpl.java:401) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.http.impl.HttpServerResponseImpl.end(HttpServerResponseImpl.java:319) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.http.impl.HttpServerResponseImpl.end(HttpServerResponseImpl.java:308) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextImplBase.unhandledFailure(RoutingContextImplBase.java:166) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:132) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:133) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextImpl.doFail(RoutingContextImpl.java:465) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextImpl.fail(RoutingContextImpl.java:166) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextWrapper.fail(RoutingContextWrapper.java:73) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextWrapper.fail(RoutingContextWrapper.java:73) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextWrapper.fail(RoutingContextWrapper.java:73) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextWrapper.fail(RoutingContextWrapper.java:73) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.RoutingContextWrapper.fail(RoutingContextWrapper.java:73) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.ext.web.impl.BlockingHandlerDecorator.lambda$handle$1(BlockingHandlerDecorator.java:53) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.impl.FutureImpl.setHandler(FutureImpl.java:79) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:289) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:339) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886) ~[wkw-mesh-server-0.22.7.jar:na]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[wkw-mesh-server-0.22.7.jar:na]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]

Just these things alone make is really hard to debug your Application or detect System errors, since they usually get flooded away with these Messages.

Since it bugged me quite some, I located the Classes which produced most of the noise and forwarded them to an "access.log". This is more of an Example rather than a solid logback for everyone.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <conversionRule conversionWord="meshName" converterClass="com.gentics.mesh.log.MeshLogNameConverter"/>
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/mesh.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>logs/mesh.%d{yyyy-MM-dd}.log.gz</fileNamePattern>

            <!-- keep 30 days' worth of history capped at 3GB total size -->
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level [%file:%line] - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="ACCESS-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>logs/access.%d{yyyy-MM-dd}.log.gz</fileNamePattern>

            <!-- keep 2 days' worth of history capped at 500MB total size -->
            <maxHistory>2</maxHistory>
            <totalSizeCap>500MB</totalSizeCap>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level [%file:%line] - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.elasticsearch.node" level="INFO" />
    <logger name="io.vertx" level="INFO"/>
    <logger name="com.gentics" level="INFO"/>
    <logger name="org.elasticsearch" level="ERROR"/>
    <logger name="ch.qos" level="ERROR"/>

    <logger name="io.vertx.ext.web.handler.impl.LoggerHandlerImpl" level="ERROR" additivity="false">
        <appender-ref ref="ACCESS-FILE" />
    </logger>
    <logger name="io.vertx.core.impl.ContextImpl" level="ERROR" additivity="false">
        <appender-ref ref="ACCESS-FILE" />
    </logger>
    <logger name="com.gentics.mesh.graphql.GraphQLHandler" level="ERROR" additivity="false">
        <appender-ref ref="ACCESS-FILE" />
    </logger>
    <logger name="io.vertx.ext.web.impl.RoutingContextImplBase" level="ERROR" additivity="false">
        <appender-ref ref="ACCESS-FILE" />
    </logger>
    <logger name="com.gentics.mesh.router.route.FailureHandler" level="ERROR" additivity="false">
        <appender-ref ref="ACCESS-FILE" />
    </logger>

    <root level="ERROR">
        <appender-ref ref="FILE"/>
    </root>
</configuration>