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

如何选择网站建设流程武邑网站建设代理

如何选择网站建设流程,武邑网站建设代理,编程序可以做网站吗,网站制作模板代码一、Logback 简介 Logback 是一个日志框架#xff0c;旨在成为 log4j 的替代品。它由 Ceki Glc 创建并维护#xff0c;是一款开源的日志框架#xff0c;是 slf4j#xff08;Simple Logging Facade for Java#xff09;的实现。相比于 log4j#xff0c;Logback 具有更高的…一、Logback 简介 Logback 是一个日志框架旨在成为 log4j 的替代品。它由 Ceki Gülcü 创建并维护是一款开源的日志框架是 slf4jSimple Logging Facade for Java的实现。相比于 log4jLogback 具有更高的性能和更好的可扩展性并提供了众多的特性如异步日志、动态日志级别、决策器等。 在项目中使用 Logback 可以很方便地记录系统运行时的信息、警告和错误等对于开发人员来说是非常有帮助的。 Logback 的基本概念。 LoggerLogger 是 Logback 的核心概念它用于记录日志。Logger 是按照类的层次结构进行命名的每个 Logger 对象都有一个名字如果没有显式指定名字则使用当前类的全限定名作为它的名字。AppenderAppender 用于定义日志的输出方式例如输出到控制台、写入文件、发送邮件等。Logback 有多种类型的 Appender可以同时输出到多个目标。LayoutLayout 用于定义日志输出格式例如日期格式、日志级别、线程名、类名等。Logback 有多种类型的 Layout可以根据需求选择使用。FilterFilter 用于对日志进行过滤可以根据日志级别、关键字、线程名等条件进行过滤。 二、Logback 的主要功能和特点 1. Logback 的主要功能 Logback 的主要功能包括 支持多种日志级别Logback 支持多种日志级别包括 TRACE、DEBUG、INFO、WARN 和 ERROR 等。多种日志输出方式Logback 支持将日志输出到控制台、文件、Syslog、JMS、邮件等多种输出方式用户可以根据自己的需求选择不同的 Appender。灵活的配置方式Logback 的配置文件可以使用 XML 或者 Groovy 编写非常灵活方便。高性能Logback 的性能非常好可以满足高并发场景下的需求。精细的过滤功能Logback 支持使用 Filter 对日志进行精细的过滤操作可以根据日志级别、线程名、关键字等条件进行过滤。 2. Logback 的特点 Logback 与其他日志系统相比具有以下几个特点 高性能Logback 是目前 Java 日志框架中性能最好的一个它支持异步输出和无锁数据结构等方式来提升性能。灵活的配置Logback 配置文件可以使用 XML 或者 Groovy 编写非常灵活方便。同时Logback 还提供了 Web 界面工具 JaninoConfigurer可以通过 Web 页面来配置 Logback。多种输出方式Logback 支持多种输出方式并且可以自定义 Appender 和 Layout对于比较复杂的应用场景也可以很好地满足需求。易于集成对于 Spring、Hibernate、Lucene 等流行框架Logback 都提供了官方的集成插件使用起来非常方便。 三、Logback 常用配置 1. name 属性 Logger 中的 name 属性用于记录器的命名它是一个字符串可以用任何字符串来命名 Logger。Logback 中同一个 Logger 可以有多个子 Logger它们之间构成了一个层次结构其命名规则按照“类所在包名类名称”的方式进行。例如 logger namecom.demo.UserService levelDEBUG additivityfalseappender-ref refFILE/appender-ref refCONSOLE/ /logger上述配置中Logger 的 name 属性为 com.demo.UserService表示一个 UserService 类的 Logger。如果不指定 name则默认使用 RootLogger即根 Logger。 2. level 属性 Logger 的 level 属性用于指定输出的日志级别Logback 日志的级别由低到高分别为 TRACE、DEBUG、INFO、WARN、ERROR、OFF。若设置了 Logger 的 level 属性则将只输出指定级别及更高级别的日志信息例如 logger namecom.demo.UserService levelDEBUG additivityfalseappender-ref refFILE/appender-ref refCONSOLE/ /logger上述配置中Logger 的 level 属性为 DEBUG表示只输出 DEBUG 级别及更高级别的日志信息。 3. additivity 属性 additivity 属性表示是否继承父 Logger 的 Appender即是否在父 Logger 的 Appender 中同时输出相同的日志信息。如果为 false则该 Logger 只会将日志信息输出到自己指定的 Appender 中并不会将日志信息传递给父 Logger。默认情况下additivity 属性为 true。 logger namecom.demo.UserService levelDEBUG additivityfalseappender-ref refFILE/appender-ref refCONSOLE/ /logger上述配置中additivity 属性为 false表示 UserService Logger 只会将日志信息输出到自己指定的 Appender而不会将日志信息传递给 RootLogger父 Logger。 4. ConsoleAppender 配置 ConsoleAppender 可以将日志信息输出到控制台配置示例如下 appender nameCONSOLE classch.qos.logback.core.ConsoleAppendertargetSystem.out/targetencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n/pattern/encoder /appender上述配置中我们定义了一个名为 CONSOLE 的 Appender其 class 属性指定为 ch.qos.logback.core.ConsoleAppender表示输出到控制台。具体细节如下 1target指定输出目标可以是 System.out 或 System.err默认为 System.out。 2encoder指定输出格式通常使用 PatternLayoutEncoder 来指定输出格式具体内容详见 Layout 配置。 5. FileAppender 配置 FileAppender 可以将日志信息输出到文件中配置示例如下 appender nameFILE classch.qos.logback.core.FileAppenderfilelog/test.log/fileappendfalse/appendencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} : %msg%n/pattern/encoder /appender上述配置中我们定义了一个名为 FILE 的 Appender其 class 属性指定为 ch.qos.logback.core.FileAppender表示输出到文件。具体细节如下 1file指定输出文件路径及名称。 2append指定是否追加数据到输出文件中若为 true 则追加否则覆盖默认值为 true。 3encoder指定输出格式通常使用 PatternLayoutEncoder 来指定输出格式具体内容详见 Layout 配置。 6. RollingFileAppender 配置 RollingFileAppender 可以将日志信息输出到文件中同时支持按时间、大小等条件进行切割以避免单个日志文件过大的问题配置示例如下 appender nameROLLING_FILE classch.qos.logback.core.rolling.RollingFileAppenderfilelog/test.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlog/test.%d{yyyy-MM-dd}.log/fileNamePatternmaxHistory7/maxHistory/rollingPolicyencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} : %msg%n/pattern/encoder /appender上述配置中我们定义了一个名为 ROLLING_FILE 的 Appender其 class 属性指定为 ch.qos.logback.core.rolling.RollingFileAppender表示输出到文件。具体细节如下 1file指定输出文件路径及名称。 2rollingPolicy指定切割策略此处使用的是 ch.qos.logback.core.rolling.TimeBasedRollingPolicy表示按时间切割。fileNamePattern 即指定切割后文件名称的格式maxHistory 指定最大的历史文件个数。 3encoder指定输出格式通常使用 PatternLayoutEncoder 来指定输出格式具体内容详见 Layout 配置。 7. SMTPAppender 配置 SMTPAppender 可以将日志信息以邮件形式发送到指定邮箱配置示例如下 appender nameEMAIL classch.qos.logback.classic.net.SMTPAppendersmtpHostsmtp.test.com/smtpHostsmtpPort465/smtpPortssltrue/sslusernametesttest.com/usernamepassword123456/passwordtotest1test.com,test2test.com/tofromtesttest.com/fromsubject错误日志/subjectlayout classch.qos.logback.classic.html.HTMLLayout/filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter /appender上述配置中我们定义了一个名为 EMAIL 的 Appender其 class 属性指定为 ch.qos.logback.classic.net.SMTPAppender表示通过邮件发送日志信息。具体细节如下 1smtpHost、smtpPort指定邮件服务器的地址和端口。 2ssl是否使用 SSL 连接邮件服务器。 3username、password邮件服务器的登录账号和密码。 4to、from指定接收邮件的邮箱地址和发送者邮箱地址。 5subject邮件主题。 6layout指定输出格式可以使用各种 Layout 类型此处使用的是 HTMLLayout。 7filter指定过滤条件此处使用的是 ThresholdFilter表示只发送 ERROR 级别及以上的日志信息。 8. PatternLayout 配置 PatternLayout 可以按照指定的格式输出日志信息下面是一些常用的格式占位符及其含义 1%d{HH:mm:ss.SSS}输出日志的时间精确到毫秒。 2[%thread]输出日志的线程名。 3%-5level输出日志级别左对齐并占位 5 个字符若不足则用空格补齐。 4%logger{36}输出日志所在类的名称最长 36 个字符。 5: %msg%n输出日志消息及换行符。 配置示例如下 encoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} : %msg%n/pattern /encoder上述配置中我们使用 PatternLayoutEncoder 来指定输出格式其 pattern 属性指定了输出格式。具体细节可见上面的格式占位符及其含义。 9. HTMLLayout 配置 HTMLLayout 可以将日志信息以 HTML 格式进行输出用于可视化展示和查看。配置示例如下 layout classch.qos.logback.classic.html.HTMLLayout/上述配置中我们使用 HTMLLayout 类型来指定输出格式其 class 属性指定为 ch.qos.logback.classic.html.HTMLLayout。如果需要添加样式和自定义输出内容可以通过 CSS 和 Header、Footer 配置进行实现。 10. LevelFilter 配置 LevelFilter 用于根据日志级别过滤日志信息可用于只记录某些级别的日志信息或忽略某些级别的日志信息配置示例如下 filter classch.qos.logback.classic.filter.LevelFilterlevelWARN/levelonMatchDENY/onMatchonMismatchACCEPT/onMismatch /filter上述配置中我们使用 LevelFilter 类型来指定过滤器其 class 属性指定为 ch.qos.logback.classic.filter.LevelFilter。具体细节如下 1level指定要过滤的日志级别。 2onMatch指定当过滤条件匹配时要执行的操作此处使用 DENY 表示拒绝输出。 3onMismatch指定当过滤条件未匹配时要执行的操作此处使用 ACCEPT 表示接受输出。 DuplicateMessageFilter 配置 DuplicateMessageFilter 用于过滤掉重复的日志信息即当多个日志消息内容相同时只记录其中一个日志信息可用于减少日志量或避免误导信息配置示例如下 filter classch.qos.logback.classic.filter.DuplicateMessageFilterallowedRepetitions1/allowedRepetitions /filter上述配置中我们使用 DuplicateMessageFilter 类型来指定过滤器其 class 属性指定为 ch.qos.logback.classic.filter.DuplicateMessageFilter。allowedRepetitions 属性指定了允许的重复次数此处设置为 1 表示当某个日志消息出现重复内容时只记录一次该日志信息。 四、配置示例 1. 一个简单常用的配置 ?xml version1.0 encodingUTF-8?configuration!-- 定义日志文件保存的路径和文件名 --property nameLOG_HOME value/var/log/myapp/property nameAPP_NAME valuemyapp/!-- 控制台输出 --appender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 按日期拆分的文件输出 --appender namerollingFile classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_HOME}/${APP_NAME}.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.log.gz/fileNamePattern/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 过滤一些无用的日志 --filter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filter!-- 设置日志记录器 --logger namecom.mypackage leveldebug additivityfalseappender-ref refrollingFile/appender-ref refconsole//logger!-- 根的日志记录器 --root levelerrorappender-ref refrollingFile/appender-ref refconsole//root/configuration上述配置代码中控制台输出和按日期拆分的文件输出是两个常见的 appender。这里也可以添加其他的 appender 来实现将日志发往不同渠道邮件、数据库等根据需要进行修改即可。在日志文件备份方面这里使用了 TimeBasedRollingPolicy 滚动策略可以在每天或每个小时结束时生成一个新的日志文件。当然也可以使用 SizeAndTimeBasedRollingPolicy 等其他的日志文件备份策略。 注意上述代码中的路径、文件名、包名等都是示例实际应用时需要根据具体情况进行修改。 2. ELK相关配置 ?xml version1.0 encodingUTF-8? configurationappender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} : %msg%n/pattern/encoder/appenderappender namefile classch.qos.logback.core.rolling.RollingFileAppenderfilelogs/app.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternlogs/app.%d{yyyy-MM-dd}.log/fileNamePatternmaxHistory7/maxHistory/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} : %msg%n/pattern/encoder/appenderappender namelogstash classch.qos.logback.core.net.SyslogAppendersyslogHost${ELK_HOST}/syslogHostsyslogPort${ELK_PORT}/syslogPortsuffixPattern%msg%n/suffixPatternfacilityUSER/facilityincludeMDCtrue/includeMDClayout classnet.logstash.logback.layout.LogstashLayoutjsonFormatter classnet.logstash.logback.jackson.LogstashJacksonJsonProvider/fieldNamesmessagelog/message/fieldNamescustomFields{app_name:${appName}}/customFields/layout/appenderlogger namecom.example levelINFOappender-ref reflogstash/appender-ref refconsole/appender-ref reffile//loggerroot levelINFOappender-ref reflogstash/appender-ref refconsole/appender-ref reffile//root/configuration3. 比较详细的配置 ?xml version1.0 encodingUTF-8? configuration debugfalse!-- 定义日志文件保存的路径和文件名 --property nameLOG_DIR value/var/log/myapp/property nameAPP_NAME valuemyapp/!-- 控制台输出 --appender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 按日期拆分的文件输出 --appender namerollingFile classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_DIR}/${APP_NAME}.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}.%i.log.gz/fileNamePatternmaxHistory30/maxHistory/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filter/appender!-- 异步输出日志避免阻塞主线程 --appender nameasyncAppender classch.qos.logback.classic.AsyncAppenderqueueSize1024/queueSizeappender-ref refrollingFile/!-- 还可以添加其他 appender --/appender!-- 按大小和日期拆分的文件输出比较灵活 --appender namerollingFile2 classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_DIR}/${APP_NAME}.log/filerollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicyfileNamePattern${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}.%i.log.gz/fileNamePatternmaxFileSize100MB/maxFileSizemaxHistory30/maxHistorytotalSizeCap10GB/totalSizeCap/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filter/appender!-- 根据系统环境变量动态配置日志级别 --appender namedynamicThresholdLogging classch.qos.logback.classic.sift.SiftingAppenderdiscriminatorkeyenv/keydefaultValuedev/defaultValue/discriminatorsiftappender nameFILE-${env} classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_DIR}/${APP_NAME}-${env}.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${LOG_DIR}/${APP_NAME}-${env}-%d{yyyy-MM-dd}.%i.log.gz/fileNamePatternmaxHistory7/maxHistory/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoderfilter classch.qos.logback.classic.filter.ThresholdFilterlevel${env prod ? INFO : DEBUG}/level/filter/appender/sift/appender!-- 设置日志记录器 --logger namecom.mypackage leveldebug additivityfalseappender-ref refasyncAppender//logger!-- 根的日志记录器 --root levelerrorappender-ref refasyncAppender/appender-ref refconsole//root!-- MDCMapped Diagnostic Context --conversionRule conversionWordreqId converterClasscom.acme.logback.ReqIdConverter/appender namemdcDemo classch.qos.logback.classic.net.SyslogAppendersyslogHostlocalhost/syslogHostfacilityLOCAL0/facilitysuffixPattern%mdc{reqId} - %message/suffixPattern/appenderlogger namecom.acme.service levelTRACEappender-ref refmdcDemo//logger!-- MDC 的另一种使用方式通过配置文件 --appender namemdcDemo2 classch.qos.logback.classic.net.SyslogAppendersyslogHostlocalhost/syslogHostfacilityLOCAL0/facilitysuffixPattern%X{reqId} - %message/suffixPattern/appenderlogger namecom.acme.service2 levelTRACEappender-ref refmdcDemo2//logger!-- Logback Groovy 编写复杂的过滤条件 --appender namegroovyDemo classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_DIR}/${APP_NAME}.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}.%i.log.gz/fileNamePatternmaxHistory30/maxHistory/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoderfilter classch.qos.logback.core.filter.Filtergroovydef mdc event.getMDC()if (mdc null) {return FilterReply.NEUTRAL}def user mdc.get(user)if (user null || !user.equals(admin)) {return FilterReply.DENY}return FilterReply.ACCEPT/groovy/filter/appenderlogger namecom.mypackage2 leveldebugappender-ref refgroovyDemo//logger!-- JMX 监控可以在 JConsole 或者 JVisualVM 中查看 --jmxConfigurator/statusListener classch.qos.logback.core.status.OnConsoleStatusListener/!-- 日志分离存储 --appender namedbAppender classcom.example.logback.appender.DBAppenderconnectionSource classcom.example.logback.datasource.DataSourceConnectionSourceurljdbc:mysql://localhost:3306/dbname/urluserusername/userpasswordpassword/passworddriverClasscom.mysql.jdbc.Driver/driverClassminConnectionsPerPartition5/minConnectionsPerPartitionmaxConnectionsPerPartition20/maxConnectionsPerPartitionpartitionCount2/partitionCount/connectionSourcebufferSize1000/bufferSizetableNamelogs/tableNamecolumnscolumn nametimestamp pattern%d{yyyy-MM-dd HH:mm:ss.SSS} /column namelevel pattern%level /column namelogger pattern%logger /column namemessage pattern%message //columns/appenderlogger namecom.example.myapp levelINFOappender-ref refasyncAppender/appender-ref refdbAppender//logger/configuration此份 Logback 配置有以下功能 按大小和日期拆分的文件输出可以通过配置文件来实现比较灵活根据系统环境变量动态配置日志级别可以根据环境变量的值来决定输出的日志级别MDCMapped Diagnostic Context通过为每个线程关联一个 Map 来实现在日志输出中添加自定义的上下文信息例如请求 ID、用户信息等可以通过配置文件或者编写 Java 类来使用 MDC可以通过 Groovy 或者 JavaScript 等脚本语言来编写复杂的过滤条件可以根据日志事件中的任意字段来决定是否输出JMX 监控可以在 JConsole 或者 JVisualVM 中查看 Logback 使用情况和日志输出日志分离存储将日志输出到数据库中。 需要注意的是上述配置代码的变量值和路径都是示例实际使用时需要根据实际情况进行修改。
http://www.tj-hxxt.cn/news/228032.html

相关文章:

  • 自己做的网站怎么上网郑州全域静态管理
  • 网站的根目录下是哪个文件夹asp.net中文官方网站
  • 餐饮网站设计公司菜鸟必读 网站被入侵后需做的检测 2
  • 扬州做阿里巴巴的公司网站招标网哪个好并且免费
  • 做网站的图片=gif服装网站建设费用
  • seo优化网站多少钱珠海 电商 网站建设
  • 前程无忧怎么做网站广东网站设计公司价格
  • 招聘网站如何做运营做海外贸易网站
  • p2p做网站苏州建网站皆去苏州聚尚网络
  • 长沙哪里学网站建设黑河做网站哪家好
  • 高端网站建设深圳wordpress添加微信扫码支付宝
  • 网站建设学习心得查询优惠券的网站如何做
  • 全国网站建设大赛橙云网站建设
  • 网站建设的步骤以及流程广州免费律师咨询
  • 游戏娱乐网站建设北京网站的优化
  • 如何设计网站建设引导页企业官网是什么意思
  • 北京检查站优化雄安智能网站建设电话
  • 做销售网站那家好企业小型网站要多少钱
  • 移动端购物网站建设目的上海app开发公司
  • php做网站需要mysql么网站首页被挂黑链
  • 定制企业网站建设网站页脚设计
  • 找做cad彩拼的网站创建购物平台需要什么
  • dede手机网站仿站无锡网站设
  • 做薪酬调查有哪些网站插件素材网站
  • 生小孩去什么网站做登记池州哪家做网站
  • 加强酒店网站建设的建议大连住房和建设局网站
  • 传播公司可以做门户网站吗中装建设股票行情
  • 三亚网站建设公司甘肃肃第八建设集团网站1
  • 为企业做网站建设优化小程序包年竞价漂亮企业网站源码
  • 天河做网站平台百度上海总部