2018-12-13 14:47:20 -05:00
|
|
|
---
|
2019-08-21 00:48:59 -04:00
|
|
|
id: logging
|
2018-12-13 14:47:20 -05:00
|
|
|
title: "Logging"
|
|
|
|
---
|
|
|
|
|
2018-11-13 12:38:37 -05:00
|
|
|
<!--
|
|
|
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
~ or more contributor license agreements. See the NOTICE file
|
|
|
|
~ distributed with this work for additional information
|
|
|
|
~ regarding copyright ownership. The ASF licenses this file
|
|
|
|
~ to you under the Apache License, Version 2.0 (the
|
|
|
|
~ "License"); you may not use this file except in compliance
|
|
|
|
~ with the License. You may obtain a copy of the License at
|
|
|
|
~
|
|
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
~
|
|
|
|
~ Unless required by applicable law or agreed to in writing,
|
|
|
|
~ software distributed under the License is distributed on an
|
|
|
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
~ KIND, either express or implied. See the License for the
|
|
|
|
~ specific language governing permissions and limitations
|
|
|
|
~ under the License.
|
|
|
|
-->
|
|
|
|
|
2015-05-05 17:07:32 -04:00
|
|
|
|
2022-05-16 05:37:21 -04:00
|
|
|
Apache Druid processes will emit logs that are useful for debugging to log files.
|
|
|
|
These processes also emit periodic [metrics](../configuration/index.md#enabling-metrics) about their state.
|
|
|
|
Metric info logs can be disabled with `-Ddruid.emitter.logging.logLevel=debug`.
|
2015-05-05 17:07:32 -04:00
|
|
|
|
2022-05-16 05:37:21 -04:00
|
|
|
Druid uses [log4j2](http://logging.apache.org/log4j/2.x/) for logging.
|
|
|
|
The default configuration file log4j2.xml ships with Druid under conf/druid/{config}/_common/log4j2.xml .
|
2015-05-05 17:07:32 -04:00
|
|
|
|
2021-12-03 08:32:01 -05:00
|
|
|
By default, Druid uses `RollingRandomAccessFile` for rollover daily, and keeps log files up to 7 days.
|
|
|
|
If that's not suitable in your case, you could modify the log4j2.xml to meet your need.
|
2015-05-05 17:07:32 -04:00
|
|
|
|
2021-12-03 08:32:01 -05:00
|
|
|
An example log4j2.xml file is shown below:
|
2015-05-05 17:07:32 -04:00
|
|
|
|
|
|
|
```
|
|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
|
|
|
<Configuration status="WARN">
|
2021-12-03 08:32:01 -05:00
|
|
|
<Console name="Console" target="SYSTEM_OUT">
|
|
|
|
<PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/>
|
|
|
|
</Console>
|
|
|
|
|
|
|
|
<RollingRandomAccessFile name="FileAppender"
|
|
|
|
fileName="${sys:druid.log.path}/${sys:druid.node.type}.log"
|
|
|
|
filePattern="${sys:druid.log.path}/${sys:druid.node.type}.%d{yyyyMMdd}.log">
|
|
|
|
<PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/>
|
|
|
|
<Policies>
|
|
|
|
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
|
|
|
|
</Policies>
|
|
|
|
<DefaultRolloverStrategy>
|
|
|
|
<Delete basePath="${sys:druid.log.path}/" maxDepth="1">
|
|
|
|
<IfFileName glob="*.log" />
|
|
|
|
<IfLastModified age="7d" />
|
|
|
|
</Delete>
|
|
|
|
</DefaultRolloverStrategy>
|
|
|
|
</RollingRandomAccessFile>
|
2015-05-05 17:07:32 -04:00
|
|
|
<Loggers>
|
|
|
|
<Root level="info">
|
2021-12-03 08:32:01 -05:00
|
|
|
<AppenderRef ref="FileAppender"/>
|
2015-05-05 17:07:32 -04:00
|
|
|
</Root>
|
2015-07-25 13:07:29 -04:00
|
|
|
|
|
|
|
<!-- Uncomment to enable logging of all HTTP requests
|
2018-08-30 12:56:26 -04:00
|
|
|
<Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG">
|
2021-12-03 08:32:01 -05:00
|
|
|
<AppenderRef ref="FileAppender"/>
|
2015-07-25 13:07:29 -04:00
|
|
|
</Logger>
|
|
|
|
-->
|
2015-05-05 17:07:32 -04:00
|
|
|
</Loggers>
|
|
|
|
</Configuration>
|
2015-07-25 13:07:29 -04:00
|
|
|
```
|
2019-05-16 14:13:48 -04:00
|
|
|
|
2022-05-16 05:37:21 -04:00
|
|
|
> NOTE:
|
|
|
|
> Although the log4j configuration file is shared with Druid's peon processes,
|
|
|
|
> the appenders in this file DO NOT take effect for peon processes for they always output logs to console.
|
|
|
|
> And middle managers are responsible to redirect the console output to task log files.
|
|
|
|
>
|
|
|
|
> But the logging levels settings take effect for these peon processes
|
|
|
|
> which means you can still configure loggers at different logging level for peon processes in this file.
|
|
|
|
>
|
|
|
|
|
2021-12-03 08:32:01 -05:00
|
|
|
## How to change log directory
|
|
|
|
By default, Druid outputs the logs to a directory `log` under the directory where Druid is launched from.
|
|
|
|
For example, if Druid is started from its `bin` directory, there will be a subdirectory `log` generated under `bin` directory to hold the log files.
|
|
|
|
If you want to change the log directory, set environment variable `DRUID_LOG_DIR` to the right directory before you start Druid.
|
|
|
|
|
|
|
|
|
2019-05-16 14:13:48 -04:00
|
|
|
## My logs are really chatty, can I set them to asynchronously write?
|
|
|
|
|
|
|
|
Yes, using a `log4j2.xml` similar to the following causes some of the more chatty classes to write asynchronously:
|
|
|
|
|
|
|
|
```
|
|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
|
|
|
<Configuration status="WARN">
|
|
|
|
<Appenders>
|
|
|
|
<Console name="Console" target="SYSTEM_OUT">
|
|
|
|
<PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/>
|
|
|
|
</Console>
|
|
|
|
</Appenders>
|
2021-12-03 08:32:01 -05:00
|
|
|
|
|
|
|
<Loggers>
|
|
|
|
<!-- AsyncLogger instead of Logger -->
|
2019-05-16 14:13:48 -04:00
|
|
|
<AsyncLogger name="org.apache.druid.curator.inventory.CuratorInventoryManager" level="debug" additivity="false">
|
|
|
|
<AppenderRef ref="Console"/>
|
|
|
|
</AsyncLogger>
|
|
|
|
<AsyncLogger name="org.apache.druid.client.BatchServerInventoryView" level="debug" additivity="false">
|
|
|
|
<AppenderRef ref="Console"/>
|
|
|
|
</AsyncLogger>
|
|
|
|
<!-- Make extra sure nobody adds logs in a bad way that can hurt performance -->
|
|
|
|
<AsyncLogger name="org.apache.druid.client.ServerInventoryView" level="debug" additivity="false">
|
|
|
|
<AppenderRef ref="Console"/>
|
|
|
|
</AsyncLogger>
|
|
|
|
<AsyncLogger name ="org.apache.druid.java.util.http.client.pool.ChannelResourceFactory" level="info" additivity="false">
|
|
|
|
<AppenderRef ref="Console"/>
|
|
|
|
</AsyncLogger>
|
|
|
|
<Root level="info">
|
|
|
|
<AppenderRef ref="Console"/>
|
|
|
|
</Root>
|
|
|
|
</Loggers>
|
|
|
|
</Configuration>
|
|
|
|
```
|