学习Maven,学习别人的经验,做个备忘录,希望可以帮到您
在pom文件里配置log4j的依赖
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>2.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.4.1</version> </dependency>
配置log4j.xml并且放到src目录
<?xml version='1.0' encoding='UTF-8'?> <!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF --> <configuration status="OFF" monitorInterval="60"> <Properties> <!-- (*必须,各应用需要修改) 部署应用的名称,命名规则 :全部小写字母、中短横线、数字,与微服务命名,disconf中命名一致 --> <property name="APPNAME">member-info-rest</property> <!-- (各应用需要修改)部署应用的端口号,用于一台服务器部署多台应用的情况,如果不需要,保持默认 --> <property name="PORT">${sys:crtServerPort:-8080}</property> <!-- (各应用需要修改)日志文件本地存放目录路径 建议各个环境跟生产环境统一起来,方便维护 --> <property name="logBaseFolder">D:/app/member-info-rest/logs</property> <!-- 日志文件名称的前缀部分,以下为建议值 --> <property name="logFileNamePrefix">${APPNAME}</property> <!-- 日志文件最小切割单位 值不做强制要求,建议300MB --> <property name="every_file_size">300MB</property> <!-- *必须并强制遵守 日志文件的编码 --> <property name="log_charset">UTF-8</property> <!-- *必须并强制遵守 日志格式说明: |日志时间|线程id|端口号|应用名称|类名|方法名|日志级别|traceId |输入参数|输出参数|耗时|任意多个扩展字段|具体打印的msg内容然后换行 --> <property name="log_pattern">|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}%logger%M|%p|%X{MDCCRT_GUID_TRACEID}###+%X{MDCCRT_EXTENTS}-###|##+%X{MDCCRT_INPUT_PARAM}-##|##+%X{MDCCRT_OUTPUT_PARAM}-##|%X{MDCCRT_COST_TIME}|%m%n</property> </Properties> <appenders> <!-- 用来控制台输出 --> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="${log_pattern}" /> </Console> <!-- 以下是建议的日志压缩包目录的格式名称 --> <!-- all File Config --> <RollingRandomAccessFile name="all" filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-all-%d{yyyyMMdd-HH}.%i.log.gz" fileName="${logBaseFolder}/${logFileNamePrefix}-all.log" immediateFlush="false"> <!-- 日志输出格式 --> <PatternLayout charset="${log_charset}" pattern="${log_pattern}" /> <!-- 以下是日志压缩包目录的建议格式名称 建议1天归档依次,压缩文件上线建议为200,这里预估每个磁盘存储空间200G左右,每个压缩包最大值200MB --> <Policies> <TimeBasedTriggeringPolicy modulate="true" interval="1" /> <SizeBaseDTriggeringPolicy size="${every_file_size}" /> </Policies> <DefaultRolloverStrategy max="1000" /> <Filters> <!-- 显示所有信息 --> <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="TRACE" /> </Filters> </RollingRandomAccessFile> <!-- error File Config --> <RollingRandomAccessFile name="errorLog" filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-error-%d{yyyyMMdd-HH}.%i.log.gz" fileName="${logBaseFolder}/${logFileNamePrefix}-error.log" immediateFlush="false"> <PatternLayout charset="${log_charset}" pattern="${log_pattern}" /> <Policies> <TimeBasedTriggeringPolicy modulate="true" interval="1" /> <SizeBaseDTriggeringPolicy size="${every_file_size}" /> </Policies> <Filters> <!-- 只显示error信息 --> <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="ERROR" /> </Filters> </RollingRandomAccessFile> </appenders> <loggers> <!-- 各应用按实际情况自行定义相关类的输出级别 --> <AsyncLogger name="com.crn.member" level="DEBUG" /> <AsyncLogger name="com.apache" level="WARN" /> <AsyncLogger name="com.ibm.sc" level="WARN" /> <AsyncLogger name="org.apache.ibatis.jdbc" level="WARN" /> <AsyncLogger name="org.apache.zookeeper.ClientCnxn" level="WARN" /> <AsyncLogger name="org.apache.zookeeper.ZooKeeper" level="WARN" /> <AsyncLogger name="org.apache.commons.httpclient.util.IdleConnectionHandler" level="WARN" /> <AsyncLogger name="org.apache.http.client.protocol.RequestAddCookies" level="WARN" /> <AsyncLogger name="org.apache.http.client.protocol.RequestAuthCache" level="WARN" /> <AsyncLogger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="WARN" /> <AsyncLogger name="org.apache.http.impl.execchain.MainClientExec" level="WARN" /> <AsyncLogger name="org.apache.http.headers" level="WARN" /> <AsyncLogger name="org.apache.http.wire" level="WARN" /> <AsyncLogger name="org.apache.activemq.transport.AbstractInactivityMonitor" level="WARN" /> <AsyncLogger name="com.alibaba.dubbo.remoting.transport.DecodeHandler" level="WARN" /> <AsyncLogger name="com.alibaba.dubbo.monitor.dubbo.DubboMonitor" level="OFF" /> <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartbeatHandler" level="WARN" /> <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartBeatTask" level="WARN" /> <AsyncLogger name="com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry" level="WARN" /> <AsyncLogger name="com.alibaba.dubbo.config.AbstractConfig" level="WARN" /> <AsyncLogger name="com.baidu.disconf.client.config.inner.DisInnerConfigHelper" level="WARN" /> <AsyncLogger name="com.baidu.disconf.client.config.ConfigMgr" level="WARN" /> <AsyncLogger name="com.baidu.disconf.core.common.utils.ClassLoaderUtil" level="WARN" /> <AsyncLogger name="com.baidu.disconf.core.common.utils.http.HttpClientUtil" level="WARN" /> <AsyncLogger name="org.springframework" level="WARN" /> <AsyncLogger name="RocketmqRemoting" level="WARN" /> <AsyncLogger name="RocketmqClient" level="WARN" /> <AsyncLogger name="org.apache.kafka" level="WARN" /> <asyncRoot level="INFO"> <!-- 各应用自行调整,日志输出至文件,自动按时间、按文件大小进行归档 ,生产环境调默认为INFO,如有特殊需求,在disconf动态调级 --> <appender-ref level="DEBUG" ref="all" /> <!-- 日志输出至Console,仅在IDE开发时打开方便开发人员,部署到服务器之后必须置为OFF,level设置为OFF表示禁用Console控制台日志输出 --> <appender-ref level="TRACE" ref="console" /> <!-- 异常日志,不用改动 --> <appender-ref level="ERROR" ref="errorLog" /> </asyncRoot> </loggers> </configuration>
maven 只会扫描java的文件和resources文件下的文件,需要配置扫描路径,在maven <build></buid>下新增resources节点
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <!--扫描配置文件所在的目录--> <resource> <directory>src/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources>
web.xm配置listener
<!-- log4j2-begin --> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener> <filter> <filter-name>log4jServletFilter</filter-name> <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> </filter> <filter-mapping> <filter-name>log4jServletFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping>
配置 ServletContextListener做测试
测试类
结果
如以上配置不能完成运行,请联系我!
如有错误,敬请包含,请帮忙指出,大家一起共勉!不胜感激