当前位置: 首页 > news >正文

旅游网站内容规划网站开发按几年摊销

旅游网站内容规划,网站开发按几年摊销,在网站上卖东西怎么做,wordpress 获取tagLogback的一项新颖功能是SiftingAppender #xff08; JavaDoc #xff09;。 简而言之#xff0c;它是一个代理附加器#xff0c;它为给定运行时属性的每个唯一值创建一个子附加器。 通常#xff0c;此属性来自MDC 。 这是基于上面链接的官方文档的示例#xff1a; JavaDoc 。 简而言之它是一个代理附加器它为给定运行时属性的每个唯一值创建一个子附加器。 通常此属性来自MDC 。 这是基于上面链接的官方文档的示例 ?xml version1.0 encodingUTF-8? configurationappender nameSIFT classch.qos.logback.classic.sift.SiftingAppenderdiscriminatorkeyuserid/keydefaultValueunknown/defaultValue/discriminatorsiftappender nameFILE-${userid} classch.qos.logback.core.FileAppenderfileuser-${userid}.log/filelayout classch.qos.logback.classic.PatternLayoutpattern%d{HH:mm:ss:SSS} | %-5level | %thread | %logger{20} | %msg%n%rEx/pattern/layout/appender/sift/appenderroot levelALLappender-ref refSIFT //root /configuration 注意 file属性是使用${userid}属性进行参数化的。 这个财产来自哪里 它必须放在MDC中。 例如在使用Spring Security的Web应用程序中我倾向于在SecurityContextHolder的帮助下使用servlet过滤器 import javax.servlet._ import org.slf4j.MDC import org.springframework.security.core.context.SecurityContextHolder import org.springframework.security.core.userdetails.UserDetailsclass UserIdFilter extends Filter {def init(filterConfig: FilterConfig) {}def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {val userid Option(SecurityContextHolder.getContext.getAuthentication).collect{case u: UserDetails u.getUsername}MDC.put(userid, userid.orNull)try {chain.doFilter(request, response)} finally {MDC.remove(userid)}}def destroy() {} } 只要确保在Spring Security过滤器之后应用此过滤器即可。 但这不是重点。 文件名中${userid}占位符的存在会导致筛选追加程序为该属性的每个不同值因此不同的用户名创建一个子追加程序。 如果未设置MDC属性以这种配置运行Web应用程序将快速创建多个日志文件例如user-alice.log user-bob.log和user-unknown.log user-bob.log 。 另一个用例是使用线程名称而不是MDC属性。 不幸的是它不是内置的但是可以使用自定义Discriminator而不是默认的MDCBasedDiscriminator轻松插入 public class ThreadNameBasedDiscriminator implements DiscriminatorILoggingEvent {private static final String KEY threadName;private boolean started;Overridepublic String getDiscriminatingValue(ILoggingEvent iLoggingEvent) {return Thread.currentThread().getName();}Overridepublic String getKey() {return KEY;}public void start() {started true;}public void stop() {started false;}public boolean isStarted() {return started;} } 现在我们必须指示logback.xml使用我们的自定义标识符 appender nameSIFT classch.qos.logback.classic.sift.SiftingAppenderdiscriminator classcom.blogspot.nurkiewicz.ThreadNameBasedDiscriminator/siftappender classch.qos.logback.core.FileAppenderfileapp-${threadName}.log/filelayout classch.qos.logback.classic.PatternLayoutpattern%d{HH:mm:ss:SSS} | %-5level | %logger{20} | %msg%n%rEx/pattern/layout/appender/sift /appender 请注意我们不再将%thread放入PatternLayout –不必要因为线程名是日志文件名的一部分 app-main.log app-http-nio-8080-exec-1.log app-taskScheduler-1 app-ForkJoinPool-1-worker-1.log ……依此类推 对于服务器应用程序这可能不是最方便的设置但是在台式机上如EDT IO线程等专注线程数量有限这可能是一个重要的选择。 参考 SiftingAppender在Java和社区博客中我们的JCG合作伙伴 Tomasz Nurkiewicz将不同的线程记录到不同的日志文件中 。 翻译自: https://www.javacodegeeks.com/2013/04/siftingappender-logging-different-threads-to-different-log-files.html
http://www.zqtcl.cn/news/2118/

相关文章:

  • 为什么只有建设网站打不开免费推广网站工具
  • seo网站优化策划书创建wordpress网站
  • 合肥专业做淘宝网站wordpress安装云
  • 论坛类网站备案吗彩票网站开发亿云
  • 成都公司网站开发用什么网站做浏览器主页
  • 雅安市住房和城乡建设局网站餐饮设计公司网站
  • 长春网页制作建站沈阳网站建设 网络服务
  • 网站上面的彩票快3怎么做培训机构管理系统
  • 深圳制作网站多少费用学包装设计网站
  • wordpress网站数据库备份咨询公司来公司做调查
  • 抚顺网站seo兴安盟住房和城乡建设部网站
  • 电子商务网站系统建设实训心得简单建站
  • 微信链接网站怎么做的网站设计与开发期末考试题
  • 婚纱摄影网站源码asp的网站建立
  • 重庆网站推广运营红圈工程项目管理软件
  • 北京通州区网站制作学做网站能赚多少钱
  • 网站开发 就业简历模板汕头各类免费建站
  • 旅游网站排行榜前20网站建设合同的法律
  • 网站管理系统怎么用莱芜信息港莱芜在线
  • 卓越网站建设的优点上海信息价查询造价信息网
  • 珠海医疗网站建设网站建设网站源码
  • 建设网站能自学吗.net搭建企业网站
  • 制作一个网站需要多长时间如何制作境外网站
  • 做网站多少人wordpress中文文章排版插件
  • 阜阳微商城网站建设辽宁奔之流建设工程有限公司网站
  • 衡水电商网站建设价格1024永久免费拒绝收费
  • 一个人做网站原型网络营销是什么工作内容
  • 电子商务网站建设课asp.net网站备份
  • 网站建设开发文档3d效果图教程网站
  • 门户网站的大数据应用深圳市福田区建设局网站