<?xml version="1.0" encoding="UTF-8"?> <!--debug 要不要打印 logback内部日志信息,true则表示要打印。建议开启--> <!--scan 配置发送改变时,要不要重新加载--> <configuration debug="false" scan="true" scanPeriod="40 seconds">
<!--注意: logback.xml在单体中只为了做测试使用,未来会换成log4j2,课程最后几章也会讲到log4j2及log4j2的相比logback的优势
-->
<!--定义参数,后面可以通过${log.base}使用-->
<property name="log.base" value="logs"/>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!--ConsoleAppender 用于在屏幕上输出日志-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--定义了一个过滤器,在LEVEL之下的日志输出不会被打印出来-->
<!--这里定义了DEBUG,也就是控制台不会输出比ERROR级别小的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<append>true</append>
<!--定义日志滚动的策略TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,
既负责滚动也负责出发滚动。有以下子节点:<fileNamePattern>:必要节点,包含文件名及“%d”转换符,
“%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。如果直接使用 %d-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--定义文件滚动时的文件名的格式-->
<fileNamePattern>${log.base}/Trace-error.%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 保留10天 -->
<maxHistory>10</maxHistory>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<!--每个日志文件最大10MB-->
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<!-- encoder 默认配置为PatternLayoutEncoder -->
<!--定义控制台输出格式-->
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="INFO_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${
log.base}/Trace-info.%d{
yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>5</maxHistory>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<!--每个日志文件最大10MB-->
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder charset="UTF-8">
<pattern>%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
50}:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="WARN_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${
log.base}/Trace-warn.%d{
yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<!--每个日志文件最大10MB-->
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder charset="UTF-8">
<pattern>%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
50}:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="DEBUG_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${
log.base}/Trace-DEBUG.%d{
yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>1</maxHistory>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<!--每个日志文件最大10MB-->
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder charset="UTF-8">
<pattern>%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
50}:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--encoder 默认配置为PatternLayoutEncoder-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>-->
<charset>UTF-8</charset>
</encoder>
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="com.chy.trace.filter.LogFilter"/>
</appender>
<!--通过 LoggerFactory.getLogger("mytest") 可以获取到这个logger-->
<!--由于这个logger自动继承了root的appender,root中已经有FILE-ERROR的appender了,自己这边又引入了FILE-ERROR的appender-->
<!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<logger name="com.chy.trace.dao" level="INFO" additivity="false">
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="STDOUT" />
</logger>
<!--root是默认的logger 这里设定输出级别是debug-->
<root level="INFO">
<!--定义了四个appender,日志会通过往这四个appender里面写-->
<appender-ref ref="STDOUT" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="ERROR_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="DEBUG_FILE" />
</root>
</configuration>
转染(Transfection) ,是将外源性基因导入细胞内的一种专门技术。随着基因与蛋白功能研究的深入,转染目前已成为实验室工作中经常涉及的基本方法。转染大致可分为物理介导、化学介导和生物介导三类途径。一转染的类型1)根据导入的核酸存在于宿主细胞的时间长短,可以分为瞬转和稳转。2)根据转染方式可以分为化学,生物,物理方法。文章剩余内容<<<<...
angular 1.6 $http.get(...).success is not a function 解决办法
单例模式,正如它的名字一样,它的目标是确保自身的单一性,即在游戏运行时,始终只存在该类的一个实例。一旦出现第二个实例,则需要被立即摧毁。单例模式的优点:可以全局访问。用单例模式创建的资源可以被全局访问。 控制并发:该模式可用于限制对共享资源的并发访问。单例模式的缺点:难以进行单元测试。单例模式通常作为管理类来管理游戏中的其他组件,过度使用,会使各个管理类之间相互依赖,使得难以对某一模块进行单独测试。 会导致懒惰和不好的编程习惯。由于单例模式可以轻松的在任何地方访问所有内容,它提供的简单性可
黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------对于面向对象的变成语言,程序需要不断地创建对象。初始,创建的所有程序通常都有指针指向它,程序可能需要访问这些对象的实例变量或调用这些对象的方法,随着程序的不...
过山车的题,二分匹配模板#include#include#include#includeusing namespace std;const int maxn = 1500;//!!!int match[maxn],book[maxn];vector e[maxn];int m,n;int dfs(int u){ int i; for(i=0;i<e[
要求:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。方法:归并方法,将数组分为前后两短,统计数木后同时进行排序。例如,数列F(n)分为head和rear等长两部分,两部分都分别排过序。则总的逆序数,等于head部分的逆序数 +rear部分的逆序数,再加上逆序的两个数分别在head和rear...
一、dut.f文件../dut/src/lvds_top.v ../dut/intel_ip/lvds_fifo_8_32/lvds_fifo_8_32.v../dut/intel_ip/lvds_fifo_32_8/lvds_fifo_32_8.v../dut/intel_ip/lvds_rx/lvds_rx.v../dut/intel_ip/lvds_tx/lvds_tx.v../testbench/testbench.v二、sim.bat文件rd /S /Q workvlib
链接:点击打开链接题意:给你一笔钱,现在要拿这笔钱去投资,有t种股票,每种股票有一个价值和年收益,输出在n年后获得最大收益代码:#include #include #include #include #include using namespace std;int v[105],w[105];int dp[1500000];int main(){
python logging模块禁止requests及elasticsearch模块打印请求日志最近写的代码基本都用到了python的标准日志模块logging,但发现在使用requests模块和elasticsearch时,即使自己没有打印相关日志,也会自动生成请求过程日志,示例如下:requests日志 2017-11-02 17:30:31|INFO|Starting new...
解决Anaconda第三方库下载慢Conda安装好以后,默认的镜像源国内很多网络环境下,访问不稳定,下载速率慢,通过修改conda的镜像源解决这一问题。将镜像源指定为国内的清华大学镜像。材料:2019年3月,Anconda5.2.0,Windows10。参考:https://jingyan.baidu.com/article/1876c8527be1c3890a137645.htm...
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -yum update -yyum remove nodejs npm -yyum install nodejs npm -y这样就可以安装到14的版本了,需要什么版本可以自己指定。
环境:Ubuntu18.04ROS melodicC++创建工作空间和功能包cd Downloads/ROSmkdir -p pcdreadshow_ws/srccd srccatkin_init_workspacecatkin_create_pkg read_pcd pcl_conversions pcl_ros roscpp sensor_msgs进入到功能包的src文件夹下面新建.cpp文件read_pcd.cpp#include<ros/ros.h>#