log4j2.xml

来源:互联网 发布:文华算法模型 编辑:程序博客网 时间:2024/06/06 18:25
<?xml version="1.0" encoding="UTF-8" ?><!-- maven项目文件位置: src\main\resources --><!-- 全局异步 :log4j2.component.properties文件 添加 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector --><!-- status="off" : 用于设置log4j自身内部运行日志输出(只输出到控制台),可以不设置  " --><!-- monitorInterval="1800" : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数 --><configuration status="off"><properties><!--变量定义 --><property name="base_dir">${catalina.base}/logs/home/</property><property name="base_dir_info_file_name">info</property><property name="base_dir_error_file_name">error</property><property name="base_dir_warn_file_name">warn</property><property name="base_dir_rolling_file_name">rolling</property><property name="base_dir_file_ext">.log</property><property name="base_dir_file_old_name">-%d{yyyy-MM-dd-HH}_%i</property><property name="base_dir_file_old_ext">.log.gz</property><!-- 发送邮件 --><property name="mail_subject">error log</property><property name="mail_from">***@qq.com</property><property name="mail_smtp_protocol">smtps</property><property name="mail_smtp_host">smtp.qq.com</property><property name="mail_smtp_port">465</property><property name="mail_smtp_user_name">****</property><property name="mail_smtp_password">****</property><property name="mail_buffer_size">50</property><property name="mail_to">***@qq.com</property>  <!-- 发送地址 --><property name="mail_cc">***@qq.com</property>  <!-- 抄送地址 --><property name="mail_reply_to">****@qq.com</property> <!-- 回复邮箱地址 --><property name="mail_smtp_debug">false</property><!--           %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间           %t 输出当前线程名称           %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0           %logger 输出logger名称,因为Root Logger没有名称,所以没有输出           %p : 日志输出格式           %c : logger的名称           %m : 日志内容,即 logger.info("message")           %n : 换行符           %C : Java类名           %L : 日志输出所在行数           %M : 日志输出所在方法名           %F :输出所在的类文件名,如Client.java           hostName : 本地机器名           hostAddress : 本地ip地址        --><property name="log_pattern">hostAddress-%d [%t] %-5p %C %M %L -%m%n</property><!-- 日志切割的最小单位 --><property name="every_file_size">100M</property> </properties><appenders><Console name="console" target="SYSTEM_OUT"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="DEBUG" onMatch="ACCEPT" />        <PatternLayout pattern="${log_pattern}"/>      </Console>        <!--<File>输出结果到指定文件</File>-->        <!--<RollingFile>同样输出结果到指定文件,但是使用buffer,速度会快点</RollingFile>-->        <!--filePattern:表示当日志到达指定的大小或者时间,产生新日志时,旧日志的命名路径。-->        <!--PatternLayout:和log4j一样,指定输出日志的格式,append表示是否追加内容,值默认为true-->    <RollingFile name="infoFile" fileName="${base_dir}${base_dir_info_file_name}${base_dir_file_ext}" filePattern="${base_dir}${base_dir_info_file_name}${base_dir_file_old_name}${base_dir_file_old_ext}">            <PatternLayout pattern="${log_pattern}" />            <Filters>            <!-- 如果类中的日志是warn级别,则匹配第一个过滤器,被直接DENY(拒绝),不被记录到文件中 -->                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />                                <!-- 如果类中的日志是info级别,则不匹配第一个过滤器,由于采用的是中立的策略,会接着走到第二个过滤器,由 -->                <!-- 于匹配第二个,且被accept,则该日志记录到info日志文件中。这样就实现的前面提到的不同级别日志输出到对 -->                <!-- 应的日志文件中。 -->                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>            </Filters>                          <Policies>            <!-- 按天分 每隔24小时产生新的日志文件-->          <!-- <TimeBasedTriggeringPolicy modulate="true" interval="1"/> -->                <!-- 按文件大小分 -->        <SizeBasedTriggeringPolicy size="${every_file_size}" />          <!-- 每隔24小时产生新的日志文件-->        <TimeBasedTriggeringPolicy/>     </Policies>        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件 -->    <!-- 如果log4j2 记录的日志达到上限,旧的日志将被删除,腾出的空间用于记录新的日志 -->            <DefaultRolloverStrategy max="20"/>                  </RollingFile>                <RollingFile name="warnFile" fileName="${base_dir}${base_dir_warn_file_name}${base_dir_file_ext}" filePattern="${base_dir}${base_dir_warn_file_name}${base_dir_file_old_name}${base_dir_file_old_ext}">            <PatternLayout pattern="${log_pattern}" />            <Filters>                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" />                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>            </Filters>                        <Policies>        <TimeBasedTriggeringPolicy/>        <SizeBasedTriggeringPolicy size="${every_file_size}" />      </Policies>    <DefaultRolloverStrategy max="20"/>        </RollingFile>                <RollingFile name="errorFile" fileName="${base_dir}${base_dir_error_file_name}${base_dir_file_ext}" filePattern="${base_dir}${base_dir_error_file_name}${base_dir_file_old_name}${base_dir_file_old_ext}">            <PatternLayout pattern="${log_pattern}" />            <Filters>                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>            </Filters>            <Policies>        <TimeBasedTriggeringPolicy/>        <SizeBasedTriggeringPolicy size="${every_file_size}" />      </Policies>    <DefaultRolloverStrategy max="20"/>        </RollingFile>                <RollingFile name="rollingFile" fileName="${base_dir}${base_dir_rolling_file_name}${base_dir_file_ext}" filePattern="${base_dir}${base_dir_rolling_file_name}${base_dir_file_old_name}${base_dir_file_old_ext}">            <PatternLayout pattern="${log_pattern}" />            <Policies>        <TimeBasedTriggeringPolicy/>        <SizeBasedTriggeringPolicy size="${every_file_size}" />      </Policies>    <DefaultRolloverStrategy max="20"/>        </RollingFile>                 <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->         <!--  <File name="log" fileName="log/test.log" append="false">             <PatternLayout pattern="${log_pattern}"/>         </File> -->                  <!-- 按分钟分 -->         <!-- <RollingRandomAccessFile name="_1min_appender" fileName="${MINUTE_HOME}/minute" filePattern="${MINUTE_HOME}/minute-%d{yyyy-MM-dd-HH-mm}.log">          <PatternLayout pattern="%m%n"/>          <Policies>      <TimeBasedTriggeringPolicy interval="1" modulate="true" />  </Policies>     </RollingRandomAccessFile> -->      <!-- 发送邮件 -->   <SMTP name="Mail" subject="${mail_subject}" from="${mail_from}" to="${mail_to}" replyTo="${mail_reply_to}"            smtpProtocol="${mail_smtp_protocol}" smtpHost="${mail_smtp_host}" smtpPort="${mail_smtp_port}"          smtpUsername="${mail_smtp_user_name}" smtpPassword="${mail_smtp_password}" smtpDebug="${mail_smtp_debug}"           bufferSize="${mail_buffer_size}" cc="${mail_cc}">             </SMTP></appenders><loggers><!-- 异步设置 --><!-- 如果要加上位置信息比如哪个类,第几行,需要设置 includeLocation="true" --><!-- 为Asynchronous Appenders 性能比同步快,比Asynchronous Loggers慢 --><AsyncLogger name="AsyncMailLogger" level="ERROR" additivity="false" includeLocation="true"><AppenderRef ref="Mail"/></AsyncLogger><AsyncLogger name="AsyncRollingLogger" level="All" additivity="false" includeLocation="true"><AppenderRef ref="rollingFile"/></AsyncLogger><!-- Root level 是设置全局的信息显示级别 -->  <!-- 级别排序: All < Trace < Debug < Info < Warn < Error < Fatal < OFF --><Root level="All"><AppenderRef ref="console"/><AppenderRef ref="rollingFile"/><AppenderRef ref="infoFile"/><AppenderRef ref="warnFile"/><AppenderRef ref="errorFile"/><AppenderRef ref="Mail" level="Error"/></Root><!-- additivity="false" : 日志不再输出到控制台 --><logger name="org.springframework" level="OFF" additivity="false"></logger><logger name="org.apache.shiro" level="OFF" additivity="false"></logger>       <logger name="org.apache.http" level="OFF" additivity="false"/></loggers></configuration><!-- FailoverAppender   维护一个队列,系统将尝试向队列中的Appender依次输出LogEvent,直到有一个成功为止官方:故障切换应用程序重复一组追加器。 如果主Appender失败,则二级追加器将按顺序尝试,直到一个成功或没有更多次要尝试 FileAppender   普通地输出到本地文件 官方:FileAppender 是一个OutputStreamAppender,用于写入fileName参数中指定的文件。 FileAppender使用FileManager(扩展OutputStreamManager)来实际执行文件I / O。 虽然不能共享来自不同配置的FileAppender,但如果管理器可访问,则FileManager可以是。 例如,servlet容器中的两个Web应用程序可以有自己的配置,并且如果Log4j在两个共同的ClassLoader中,则可以安全地写入同一个文件FlumeAppender将几个不同源的日志汇集、集中到一处。官方:这是在单独的jar中提供的可选组件。是一个分布式,可靠和可用的系统,用于从大量不同的源有效地收集,聚合和移动大量日志数据到集中式数据存储。 FlumeAppender使用LogEvents并将其作为序列化Avro事件发送到Flume代理以供消费。Flume Appender支持三种操作模式。它可以充当远程Flume客户端,通过Avro将Flume事件发送到配置了Avro Source的Flume代理。它可以充当嵌入式Flume代理,其中Flume事件直接传递到Flume进行处理。它可以将事件持久化到本地BerkeleyDB数据存储,然后异步发送事件到Flume,类似于嵌入Flume代理,但没有大多数Flume依赖。作为嵌入式代理的用法将导致消息被直接传递到Flume信道,然后控制将立即返回到应用程序。所有与远程代理的交互都将异步进行。将“type”属性设置为“嵌入”将强制使用嵌入式代理。此外,在追加器配置中配置代理属性还将导致使用嵌入的代理。JMSQueueAppender VS. JMSTopicAppender  与JMS相关的日志输出RewriteAppender   对日志事件进行掩码或注入信息RollingFileAppender 对日志文件进行封存(详细)RoutingAppender  在输出地之间进行筛选路由SMTPAppender  将LogEvent发送到指定邮件列表SocketAppender  将LogEvent以普通格式发送到远程主机SyslogAppender  将LogEvent以RFC 5424格式发送到远程主机AsynchAppender   将一个LogEvent异步地写入多个不同输出地ConsoleAppender  将LogEvent输出到命令行(控制台)   -->


 
原创粉丝点击