Log4j2.xml详解
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" monitorInterval="600">
<Properties>
<!--日志文件存放目录-->
<Property name="LOG_HOME">/epcfw/wsg/logs</Property>
</Properties>
<Appenders>
<!--控制台日志输出格式 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5p] %d{yy-MM-dd HH:mm:ss.SSS} [%C.%M:%L(%t)] ~ %m%n" />
</Console>
<!--此次配置一个日志发送一次;connectTimeoutMillis是与鹰眼服务器连接超时时间;requestTimeoutMillis是发送鹰眼日志超时时间;maxDelayMillis是最大间隔时间-->
<!--鹰眼日志配置-->
<Flume name="EventLogger" compress="false" connectTimeoutMillis="3000"
requestTimeoutMillis="60000" maxDelayMillis="600000">
<!--府青-->
<Property name="channel.type">memory</Property>
<Property name="channel.capacity">100</Property>
<!--transactionCapacity小于capacity-->
<Property name="channel.transactionCapacity">1</Property>
<!--有几个主机就写几个agent-->
<Property name="sinks">agent1 agent2 agent3 agent4 agent5 agent6</Property>
<Property name="agent1.type">avro</Property>
<Property name="agent1.hostname">10.113.161.83</Property>
<Property name="agent1.port">8505</Property>
<!--batch-size要小于transactionCapacity -->
<Property name="agent1.batch-size">1</Property>
<Property name="agent1.connect-timeout">3000</Property>
<Property name="agent1.request-timeout">60000</Property>
<Property name="agent2.type">avro</Property>
<Property name="agent2.hostname">10.113.161.84</Property>
<Property name="agent2.port">8505</Property>
<Property name="agent2.batch-size">1</Property>
<Property name="agent2.connect-timeout">3000</Property>
<Property name="agent2.request-timeout">60000</Property>
<Property name="agent3.type">avro</Property>
<Property name="agent3.hostname">10.113.161.85</Property>
<Property name="agent3.port">8505</Property>
<Property name="agent3.batch-size">1</Property>
<Property name="agent3.connect-timeout">3000</Property>
<Property name="agent3.request-timeout">60000</Property>
<Property name="agent4.type">avro</Property>
<Property name="agent4.hostname">10.113.161.86</Property>
<Property name="agent4.port">8505</Property>
<Property name="agent4.batch-size">1</Property>
<Property name="agent4.connect-timeout">3000</Property>
<Property name="agent4.request-timeout">60000</Property>
<Property name="agent5.type">avro</Property>
<Property name="agent5.hostname">10.113.161.87</Property>
<Property name="agent5.port">8505</Property>
<Property name="agent5.batch-size">1</Property>
<Property name="agent5.connect-timeout">3000</Property>
<Property name="agent5.request-timeout">60000</Property>
<Property name="agent6.type">avro</Property>
<Property name="agent6.hostname">10.113.161.88</Property>
<Property name="agent6.port">8505</Property>
<Property name="agent6.batch-size">1</Property>
<Property name="agent6.connect-timeout">3000</Property>
<Property name="agent6.request-timeout">60000</Property>
<!--均衡加载-->
<Property name="processor.type">load_balance</Property>
<Property name="processor.backoff">true</Property>
<!-- 随机分配-->
<Property name="processor.selector">round_robin</Property>
<Property name="processor.selector.maxTimeOut">300000</Property>
<PatternLayout pattern="%m" />
</Flume>
<!--滚动日志文件的配置 -->
<Routing name="Routing">
<Routes pattern="$${ctx:moduleName}">
<Route>
<RollingFile name="LogFile" append="true" fileName="${LOG_HOME}/ep-${sys:PORT}.log"
filePattern="${LOG_HOME}/ep-${sys:PORT}.log.%i">
<!-- [%X{ip}-%X{timestamp}-%X{uri}] 这个是把ip、timestamp、uri放入到ThreadContext里,log4j2会自己获取;参考com.sitech.cfw.wsg.esb.log.Log4jMDCFilter
-->
<PatternLayout pattern="[%-5p] [%X{ip}-%X{timestamp}-%X{uri}] %d{yy-MM-dd HH:mm:ss.SSS} [%C.%M:%L(%t)] ~ %m%n" />
<Policies>
<!--一个日志文件最大500MB -->
<SizeBasedTriggeringPolicy size="500MB" />
</Policies>
<!--日志文件最多4个-->
<DefaultRolloverStrategy max="4" />
</RollingFile>
</Route>
</Routes>
</Routing>
</Appenders>
<Loggers>
<!--文件日志,可以设置日志级别-->
<Root level="info" includeLocation="true">
<AppenderRef ref="Routing" />
</Root>
<!--这个主要是FlumeLogger这个类的日志设置-->
<Logger name="com.sitech.cfw.wsg.esb.flume.FlumeLogger" level="info" additivity="false" includeLocation="true">
<!--输出到文件中-->
<AppenderRef ref="Routing" />
<!--输出到鹰眼日志-->
<AppenderRef ref="EventLogger" />
</Logger>
</Loggers>
</Configuration>