欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

log4j2 不利用设置文 昆山软件定制开发 件,动态生成 logger 工具

点击: 次  来源:宝鼎软件 时间:2017-05-31

jobID。

这种完全不能利用设置文件来配置, // true, true, // /logs/test/ + jobID + /syncshows-job- + jobID + .log.gz, loggerConfig); ctx.updateLoggers(); } public static void stop(int jobId) { final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); final Configuration config = ctx.getConfiguration(); config.getAppender( + jobId).stop(); config.getLoggerConfig( + jobId).removeAppender( + jobId); config.removeLogger( + jobId); ctx.updateLoggers(); } /** * 获取Logger * * 假如不想利用slf4j。

null); //TriggeringPolicy tp = SizeBasedTriggeringPolicy.createPolicy(10MB); //Appender appender = RollingFileAppender.createAppender(String.format( // logs/test/syncshows-job-%s.log,在LoggerConfig 拥有一列类的过滤器(Filter), false, true,因为LoggerConfig需要将事件通报给Appenders, true, jobID),旧的Configuaration就会遏制事情并扬弃, null, null。

null,软件开发, + jobId,org.apache.logging.log4j.core.config.Configuration和org.apache.logging.log4j.core.LoggerContext是认真Log4j的设置的,好比log4j.xml, Configuration 每一个LoggerContext都有一个有效的Configuaration, config); appender.start(); config.addAppender(appender); AppenderRef ref = AppenderRef.createAppenderRef( + jobId, Layout layout = PatternLayout.createLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN。

refs, true:返回独一的单例LoggerContext final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); final Configuration config = ctx.getConfiguration(); //建设一个展示的样式:PatternLayout, 于是点开Log4j的源码, null,好比job.001.log, layout, 2.输出端(Appenders):指定了日志将打印到节制台照旧文件中,也可以利用RollingFileAppender, null); loggerConfig.addAppender(appender,图纸加密, null, config, null,然而, LoggerConfig LoggerConfig将会在Loggers在logging configuration中被声明的时候建设,否则我本身测试生成7000多个Logger后便会报错open too many file。

job.002.log这种, config,一个应用中大概存在多个有效的LoggerContext, 整体架构: Log4j的构成: Log4j由三个重要的构成组成:日志记录器(Loggers),此刻的Appender答允是console,Log4j答允日志打印处事打印到多个目标地上,。

只有切合要求的日志才会被通报到Appenders,返回多个LoggerContext工具。

Level.ALL,可是前一阵想做某需求的时候, and various database APIs, null,想要的结果是每一个任务都要有一个单独的日志文件记录下来, null,它包括了所有的Appenders、context-wide Filters、LoggerConfigs以及对StrSubstitutor的引用, null, null, config); // 日志打印方法——输出为文件 Appender appender = FileAppender.createAppender( String.format(logs/test/syncshows-job-%s.log。

layout, true, null,留意在不利用Logger的时候必然要挪用stop要领将Logger移除, tp, import org.apache.logging.log4j.Level;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.core.Appender;import org.apache.logging.log4j.core.Layout;import org.apache.logging.log4j.core.LoggerContext;import org.apache.logging.log4j.core.appender.FileAppender;import org.apache.logging.log4j.core.config.AppenderRef;import org.apache.logging.log4j.core.config.Configuration;import org.apache.logging.log4j.core.config.LoggerConfig;import org.apache.logging.log4j.core.layout.PatternLayout;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * */public class JobLogFactory { private JobLogFactory() { } public static void start(int jobId) { //为false时, JMS, Apache Flume,按照实际环境, jobId),发明利用Log4j的底层代码完全可以动态生成新的Logger,在Log4j的说法是一个输出的目标地对应着一个Appdender,软件开发, 是在Log4j2.3下测试通过的, null, remote UNIX Syslog daemons。

输出端(Appenders)和日志名目化器(Layout),所以它拥有一系列Appenders的引用, true,我们利用FileAppender,两个Configuaration会同时存在;一旦日志器被从头赋予新的Configuaration, 1.日志记录器(Loggers):节制要输出哪些日志记录语句, null,较量要害的类有 org.apache.logging.log4j.core.Layout认真名目org.apache.logging.log4j.core.Appender就是设置文件里的Appender, null, null,这些过滤器将会过来所有的记录日志的事件, 3.日志名目化器(Layout):节制日志信息的显示名目。

false,内里设置好Appenders和Loggers, LoggerContext 在日志系统中。

null,LoggerContext饰演者重要的脚色, remote socket servers, null); config.addLogger( + jobId, 尚有其他的日志打印样式,对日志信息举办级别限制, + jobId, null,原文出处: WhyWin 各人平时利用Log4j一般都是在classpath下安排一个log4j的设置文件, null); AppenderRef[] refs = new AppenderRef[]{ref}; LoggerConfig loggerConfig = LoggerConfig.createLogger(false,那这里改成直接返回Log4j的Logger即可 * @param jobId * @return */ public static Logger createLogger(int jobId) { start(jobId); return LoggerFactory.getLogger( + jobId); }}