做网站公司哪家正规古楼角网站建设
news/
2025/9/24 7:31:33/
文章来源:
做网站公司哪家正规,古楼角网站建设,国外建站网址,wordpress 子主题 样式2019独角兽企业重金招聘Python工程师标准 由于最近用阿里云日志服务整合log4j#xff0c;在配置com.aliyun.openservices.log.log4j.LoghubAppender需要设置一些参数#xff0c;因为项目中有统一的配置文件#xff0c;所以想要可以直接在log4j.xml中通过${}来… 2019独角兽企业重金招聘Python工程师标准 由于最近用阿里云日志服务整合log4j在配置com.aliyun.openservices.log.log4j.LoghubAppender需要设置一些参数因为项目中有统一的配置文件所以想要可以直接在log4j.xml中通过${}来获取参数参考下面的配置。 appender nameAliyunSLS classcom.aliyun.openservices.log.log4j.LoghubAppenderparam nameprojectName value${Props.Log4j.AliyunSLS.projectName}/!-- 日志服务的project名必选参数 --param namelogstore value${Props.Log4j.AliyunSLS.logstore}/!-- 日志服务的logstore名必选参数 --param nameendpoint value${Props.Log4j.AliyunSLS.endpoint}/!-- 日志服务的http地址必选参数 --param nameaccessKeyId value${Props.Log4j.AliyunSLS.accessKeyId}/!-- 用户身份标识必选参数 --param nameaccessKey value${Props.Log4j.AliyunSLS.accessKey}/!-- 用户身份标识必选参数 --param namepackageTimeoutInMS value${Props.Log4j.AliyunSLS.packageTimeoutInMS}/!-- 被缓存起来的日志的发送超时时间如果缓存超时则会被立即发送单位是毫秒默认值为3000最小值为10可选参数 --param namelogsCountPerPackage value${Props.Log4j.AliyunSLS.logsCountPerPackage}/!-- 每个缓存的日志包中包含日志数量的最大值不能超过 4096可选参数 --param namelogsBytesPerPackage value${Props.Log4j.AliyunSLS.logsBytesPerPackage}/!-- 每个缓存的日志包的大小的上限不能超过 3MB单位是字节可选参数 --param namememPoolSizeInByte value${Props.Log4j.AliyunSLS.memPoolSizeInByte}/!-- Appender 实例可以使用的内存的上限单位是字节默认是 100MB可选参数 --param namemaxIOThreadSizeInPool value${Props.Log4j.AliyunSLS.maxIOThreadSizeInPool}/!-- 指定I/O线程池最大线程数量主要用于发送数据到日志服务默认是8可选参数 --param nameretryTimes value${Props.Log4j.AliyunSLS.retryTimes}/!-- 指定发送失败时重试的次数如果超过该值会把失败信息通过log4j的LogLog进行输出默认是3可选参数 --param nametopic value${Props.Log4j.AliyunSLS.topic}/!-- 指定日志主题可选参数 --!--param namesource valueProps.Log4j.AliyunSLS.source/--!-- 指定日志来源可选参数 --param nametimeFormat value${Props.Log4j.AliyunSLS.timeFormat}/!-- 设置时间格式可选参数 --param nametimeZone value${Props.Log4j.AliyunSLS.timeZone}/!-- 设置时区可选参数 --param nameThreshold value${Props.Log4j.AliyunSLS.Threshold}/!-- 输出WARN级别及以上的消息 --/appender log4j.xml中通过${}引用的变量是系统变量即通过System.getProperty()获取显然这里我们只需要将我们需要的变量设置到系统变量中即可第一种方法就是在启动的时候指定系统变量这种方法不方便每次启动都要手动输入变量的值。第二种就是我们只要确保在日志服务启动前将参数设置到系统变量中就可以了。这里介绍一种通过自定义LoggerFactory的方式来实现。 通过查看源码知道log4j在解析log4j.xml的时候最先解析的是loggerFactory/节点该节点代表的是日志生成工厂接口org.apache.log4j.spi.LoggerFactory代码如下 package org.apache.log4j.spi;import org.apache.log4j.Logger;public interface LoggerFactory {Logger makeNewLoggerInstance(String var1);
} 默认情况下log4j会加载LoggerFactory的默认实现类org.apache.log4j.DefaultCategoryFactory代码如下 package org.apache.log4j;import org.apache.log4j.spi.LoggerFactory;class DefaultCategoryFactory implements LoggerFactory {DefaultCategoryFactory() {}public Logger makeNewLoggerInstance(String name) {return new Logger(name);}
} DefaultCategoryFactory.makeNewLoggerInstance(name)直接生成Logger需要注意的是Logger的构造方法是受保护的也就是我们没办法在其他包中通过new Logger(name)来生成一个Logger实例代码如下 public class Logger extends Category {private static final String FQCN;protected Logger(String name) {super(name);}...
} 由源码可以看出LoggerFactory的实现非常简单接下来看一下如何实现。 1、由于Logger的构造方法是受保护的所以我们只要通过自定义Logger子类就可以使用Logger的功能了 public class Log4jLogger extends Logger {public Log4jLogger(String name) {super(name);}
} 2、实现LoggerFactory接口 public class Log4jLoggerFactory implements LoggerFactory {private static final String LOG4J_PROPERTY_PREFIX_KEY log4jPropertyPrefix;//默认以Props.Log4j.开头的参数加载到系统变量中private static final String DEFAULT_LOG4J_PROPERTY_PREFIX Props.Log4j.;static {loadLog4jPropsToSystem();}//加载参数到系统变量中//PropertiesUtils由系统自定义的获取配置文件的工具类根据自己的需要自行实现private static void loadLog4jPropsToSystem() {//如果配置了log4jPropertyPrefix则以该参数作为参数开头标识String prefixsParam PropertiesUtils.getStringValue(LOG4J_PROPERTY_PREFIX_KEY);String[] prefixs null;if (StringUtil.isNotBlank(prefixsParam)) {prefixs prefixsParam.split(,);} else {prefixs new String[] {DEFAULT_LOG4J_PROPERTY_PREFIX};}//获取所有系统配置文件信息MapObject, Object allProperties PropertiesUtils.getAllProperties();if (allProperties ! null !allProperties.isEmpty()) {for (Map.EntryObject, Object e : allProperties.entrySet()) {String key e.getKey().toString();for (String pf : prefixs) {if (key.startsWith(pf)) {System.setProperty(key, e.getValue().toString());System.out.println(Set log4j property[ key e.getValue().toString() ] into System. );break;}}}}}Overridepublic Logger makeNewLoggerInstance(String name) {return new Log4jLogger(name);}} 3、在log4j.xml中配置自定义LoggerFactoryloggerFactory/配置在最前面 log4j:configuration xmlns:log4jhttp://jakarta.apache.org/log4j/!-- 自定义log4j日志生成工厂可以加载配置文件中参数设置到系统参数中默认加载以Props.Log4j.开头的参数可以通过log4jPropertyPrefix配置加载哪些参数有多个的话用逗号分隔 --loggerFactory class自己的包路径.Log4jLoggerFactory/...
/log4j:configuration 到这里就完毕了配置文件中的参数就可以给log4j.xml使用了。 转载于:https://my.oschina.net/linchuhao23/blog/2248889
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915209.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!