精华内容
下载资源
问答
  • log4j不同级别日志完全分开打印

    千次阅读 2016-11-24 14:20:45
    默认的log4j 打印日志输出的文件中低级别会包含高级别日志,比如定义了输出级别为info,则日志文件中会包含了:info以及比...只判断级别是否相等,判断优先级 代码如下: public class LogUtil extends DailyRoll




    可以自由收藏管理个人常用网址的导航网     666导航网   

    默认的log4j 打印日志输出的文件中低级别会包含高级别日志,比如定义了输出级别为info,则日志文件中会包含了:info以及比info高级别的warn,error等信息,造成文件的冗余,通过继承log4j的原始类,重写isAsSevereAsThreshold方法 只判断级别是否相等,不判断优先级

    代码如下:

    public class LogUtil  extends DailyRollingFileAppender {
    	static {
    /*这里要注意,项目运行起来后,会自动加载src下面的log4j.properties配置文件,不需要在代码里手动引入,否则日志信息会重复打印两遍,如果文件名不是log4j.properties,则需要手动指定配置文件路径*/
    		//PropertyConfigurator.configure("log4j.properties");// :读取使用Java的特性文件编写的配置文件。
    	}
    	public boolean isAsSevereAsThreshold(Priority priority) {    
            //只判断是否相等,而不判断优先级     
          return this.getThreshold().equals(priority);    
       }   
    	public static boolean DEBUG = true;
    	public static boolean DEBUG_LESSER = true;
    	private static Logger logger = Logger.getLogger("");
    	private static final String tag = "netty ";
    
    	private static SimpleDateFormat sdf = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
    	
    	//==========================5个打印级别===========================================================
    	
    		public static void logDebug(String str) {
    			if (DEBUG)
    				logger.debug(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
    		}
    
    		public  static void logInfo(String str) {
    			if (DEBUG)
    				logger.info(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
    		}
    		
    		public static void logWarn(String str) {
    			if (DEBUG)
    				logger.warn(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
    		}
    		
    		public static void logError(String str) {
    			if (DEBUG)
    				logger.error(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
    		}
    		
    		public static void logFatal(String str) {
    			if (DEBUG)
    				logger.fatal(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
    		}
    }


    
    

    下面是配置文件log4j.properties

    log4j.rootLogger= Console,Info,Warn, Error,Fatal
    
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.Threshold = OFF  
    
    #Info
    log4j.appender.Info=com.xcinfo.cool.util.LogUtil
    log4j.appender.Info.File=./cold_chain_log_info.log
    log4j.appender.Info.layout=org.apache.log4j.PatternLayout
    log4j.appender.Info.Threshold = INFO
    log4j.appender.Info.File.DatePattern='.'yyyy-MM-dd'.log'
    
    #Warn
    log4j.appender.Warn=com.xcinfo.cool.util.LogUtil
    log4j.appender.Warn.File=./cold_chain_log_warn.log
    log4j.appender.Warn.layout=org.apache.log4j.PatternLayout
    log4j.appender.Warn.Threshold = DEBUG
    log4j.appender.Warn.File.DatePattern='.'yyyy-MM-dd'.log'
    
    #Error
    log4j.appender.Error=com.xcinfo.cool.util.LogUtil
    log4j.appender.Error.File=./cold_chain_log_err.log
    log4j.appender.Error.layout=org.apache.log4j.PatternLayout
    log4j.appender.Error.Threshold = ERROR 
    log4j.appender.Error.File.DatePattern='.'yyyy-MM-dd'.log'
    
    #Fatal
    log4j.appender.Fatal=com.xcinfo.cool.util.LogUtil
    log4j.appender.Fatal.File=./cold_chain_log_fatal.log
    log4j.appender.Fatal.layout=org.apache.log4j.PatternLayout
    log4j.appender.Fatal.Threshold = FATAL
    log4j.appender.Fatal.File.DatePattern='.'yyyy-MM-dd'.log'
    
    
    

    配置简要说明:

    log4j.appender.test.File=./xc_app_log_error.log    "表示输出文件路径"
    log4j.appender.RollingFile.File.DatePattern='.'yyyy-MM-dd'.log'   
    表示每天生成一个日志文件,当天的日志文件会保存在xc_app_log_error.log文件中
    到了第二天,会将昨天的日志文件xc_app_log_error.log保存为xc_app_log_error.'yyyy-MM-dd'.log',并将第二天的文件保存在新的
    xc_app_log_error.log文件中,以此类推每过一天就追加一天的日志文件

    log4j.appender.RollingFile.Threshold =日志级别   分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG


    static Level DEBUG
    DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。

    static Level INFO
    INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。

    static Level WARN
    WARN level表明会出现潜在错误的情形。

    static Level ERROR
    ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

    static Level FATAL
    FATAL level指出每个严重的错误事件将会导致应用程序的退出。

    另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):
    static Level ALL
    ALL Level是最低等级的,用于打开所有日志记录。

    static Level OFF
    OFF Level是最高等级的,用于关闭所有日志记录。






    
    
     


       


    可以自由收藏管理个人常用网址的导航网      666导航网   
    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201910/31/1572470677_538983.png) 在做分页打印的时候,table中th的border被分开了,怎么让border分开,都显示在第二页
  • 最近使用SLF4J 顺便迷上了logback, 想实现以前log4j那种 debug 和 warn(error) 日志分开打印到不同文件的方式,配置了半天没有成功,最后查找官方文档发现Filter可以用来实现我们想要的功能。 1 日志打印流程


    最近使用SLF4J 顺便迷上了logback, 想实现以前log4j那种 debug 和 warn(error) 日志分开打印到不同文件的方式,配置了半天没有成功,最后查找官方文档发现Filter可以用来实现我们想要的功能。


    1 日志打印流程

     


    2 我们这里主要使用在Appender格式化message string 之前的filter来实现想要的功能。

    Regular logback-classic filters extend the Filterabstract class which essentially consists of a singledecide() method taking anILoggingEventinstance as its parameter.

    Filters are organized as an ordered list and are based onternary logic. The decide(ILoggingEvent event) methodof each filter is called in sequence. This method returns one oftheFilterReplyenumeration values, i.e. one of DENY,NEUTRAL orACCEPT. If the valuereturned by decide() is DENY, then thelog event is dropped immediately without consulting the remainingfilters. If the value returned isNEUTRAL, then thenext filter in the list is consulted. If there are no furtherfilters to consult, then the logging event is processed normally.If the returned value isACCEPT, then the loggingevent is processed immediately skipping the invocation of theremaining filters.

    In logback-classic, filters can be added to Appender instances. By adding one or more filters to an appender, you can filter events by arbitrary criteria, such as the contents of the log message, the contents of the MDC, the time of day or any other part of the logging event.


    logback 提供了常用的LevelFilter, ThreadholdFilter.

    LevelFilter

    LevelFilter filters events based on exact levelmatching. If the event's level is equal to the configured level,the filter accepts or denies the event, depending on theconfiguration of the onMatch andonMismatch properties. Here is a sampleconfiguration file.


    <configuration>
      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
          <level>INFO</level>
          <onMatch>ACCEPT</onMatch>
          <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
          <pattern>
            %-4relative [%thread] %-5level %logger{30} - %msg%n
          </pattern>
        </encoder>
      </appender>
      <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
      </root>
    </configuration>

    ThresholdFilter

    The ThresholdFilter filters events below thespecified threshold. For events of level equal or above thethreshold,ThresholdFilter will respond NEUTRAL whenitsdecide() method is invoked. However, events witha level below the threshold will be denied. Here is a sampleconfiguration file.


    <configuration>
      <appender name="CONSOLE"
        class="ch.qos.logback.core.ConsoleAppender">
        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
          <level>INFO</level>
        </filter>
        <encoder>
          <pattern>
            %-4relative [%thread] %-5level %logger{30} - %msg%n
          </pattern>
        </encoder>
      </appender>
      <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
      </root>
    </configuration>

    通过使用上面的两个过滤器,我们很容易得到想要的结果配置:

    <configuration scan="false" debug="false">
    	<property name="module_name" value="happy-crawler-1688" />
    	<timestamp key="time_pattern" datePattern="yyyy-MM-dd HH:mm:ss" />
    	<contextName>${module_name}-${time_pattern}</contextName>
    
    	<appender name="DEBUG_FILE" class="ch.qos.logback.core.FileAppender">
    		<filter class="ch.qos.logback.classic.filter.LevelFilter">
    			<level>WARN</level>
    			<onMatch>DENY</onMatch>
    			<onMismatch>NEUTRAL</onMismatch>
    		</filter>
    
    		<filter class="ch.qos.logback.classic.filter.LevelFilter">
    			<level>ERROR</level>
    			<onMatch>DENY</onMatch>
    			<onMismatch>NEUTRAL</onMismatch>
    		</filter>
    
    		<file>logs/debug.log</file>
    		<append>false</append>
    		<encoder>
    			<pattern>%d [%thread] [%-5level] %logger{0} - %msg%n</pattern>
    		</encoder>
    	</appender>
    
    	<appender name="WARN_FILE" class="ch.qos.logback.core.FileAppender">
    		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    			<level>WARN</level>
    		</filter>
    
    		<file>logs/warn.log</file>
    		<append>false</append>
    		<encoder>
    			<pattern>%d [%thread] [%-5level] %file,%line - %msg%n</pattern>
    		</encoder>
    	</appender>
    
    	<root level="DEBUG">
    		<appender-ref ref="DEBUG_FILE" />
    		<appender-ref ref="WARN_FILE" />
    	</root>
    
    </configuration>

    参考文章:  http://logback.qos.ch/manual/filters.html

    展开全文
  • 修改pom重新打包 ZIP nothing nothing repackage 再次用 mvn clean package 出来的包就包含lib了 3. 运行jar包 #C:\111111\lib为lib包路径,执行下面命令启动项目。 java -Dloader.path=C:\111111\lib -jar ...

    Springboot瘦身(lib和程序分开打包)

    1. 首先用mvn clean package正常打出jar包

    这个jar包可能有几百兆大小,lib占了绝大多数
    将jar包解压,将 BOOT-INF 下的 lib 包拿出单独存放

    2. 修改pom重新打包

    <configuration>
        <layout>ZIP</layout>
        <includes>
            <include>
                <groupId>nothing</groupId>
                <artifactId>nothing</artifactId>
            </include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    


    再次用 mvn clean package 打出来的包就不包含lib了

    3. 运行jar包

    #C:\111111\lib为lib包路径,执行下面命令启动项目。

    java -Dloader.path=C:\111111\lib -jar jeecg-boot-module-system-2.3.0.jar

    #目录结构

    展开全文
  • param2 参数2] * @return java.lang.String **/ 参数在一个数组里面,在参数数量多或者注释内容长的情况下,排版好看,需要改成每个参数单独一行。 /** * @Author Sheep Code * @Description * @Date 2020/07/17...

    idea 类注释代码:

    *
     * @Author      Sheep Code
     * @Description 
     * @Date        $date$ $time$
     * @Param       $param$
     * @return      $return$
     **/
    

    效果如下:

    	/**
         * @Author      Sheep Code
         * @Description
         * @Date        2020/07/17 17:07
         * @Param       [param1 参数1, param2 参数2]
         * @return      java.lang.String
         **/
    

    参数在一个数组里面,在参数数量多或者注释内容长的情况下,排版不好看,需要改成每个参数单独一行。

    	/**
         * @Author      Sheep Code
         * @Description
         * @Date        2020/07/17 17:07
         * @Param       param1 参数1
         * @Param       param2 参数2
         * @Param       param3 参数3
         * @return      java.lang.String
         **/
    

    设置如下:
    表达式留空,默认值填入自定义脚本代码,最后打钩,点击OK。
    脚本代码:

    groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++){if(i==0){result = params[i] + ' '}else{result+='\\n'+' * @Param ' + '      ' + params[i] + ' ' + ((i < params.size() - 1) ? '' : '')}}; return result", methodParameters()) 
    

    在这里插入图片描述

    展开全文
  • html: <div id="printBox"> <!--你需要打印的内容--> </div>...var printBox = document.getElementById('printBox');...var newWin = window.open(window.document.URL); //新...
  • Nginx 日志能能访问日志把状态不是200的单独写到另外的一个文件,要怎么设置
  • python的官网都打不开了-python打不

    千次阅读 2020-10-29 14:33:41
    广告关闭腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元!问题原因:我之前装了python3,后来又装了python2,...常有同学反映 python 官网打不开、网速慢,...
  • springboot中Maven打包与依赖的jar分开

    万次阅读 2018-06-05 09:34:29
       我们在用springboot开发时,时常会遇到这种问题,当我们对程序做了一个小改动时,如果要将改动后的程序发布到生产环境,则需要将整个程序重新打包,然后将完的包发布到生产环境上,这样有个问题,如果依赖的...
  • word 2013/04/09 word如何转成pdf-word里没有“另存为PDF或xps”怎么办 word如何转成pdf-word里没有“另存为PDF或xps”怎么办 word如何转成pdf-word里没有"另存为PDF或xps"怎么办 当word中找到"另存为PDF或xps"时...
  • Excel套程序使用操作说明 1、选择数据源Excel文件,要求是2007以后的xlsx格式; 2、选择设置好打印格式或者想要的其他格式的模版文件; 3、点击左数据源表格的第一行,观察右边的数据列标题对应 显示的是所在...
  • word一页内容怎么分成两页打印

    千次阅读 2021-01-14 00:34:49
    word一页内容怎么分成两页打印我们经常在打印时会选择把两页A4在一张A3上,但有的时候也会需要把一张A3的内容分成两页A4来打印,那么,如何进行操作呢?下面就来看看小编的做法吧。调整页面布局-页面设置-纸张,将...
  •  最近收到个任务,由于定时任务日志打印跟其他任务日志打印在同一个文件中,导致其他日志可读性很差,基本都是十秒一个的定时任务的日志,这样原先的日志就失去了意义,需要将定时任务中的日志与其他任务的日志分开打印,...
  • 或者需要重新打印,此时需要重新设置所有参数,列“批量打印标签”对话框后可以看到“调用历史记录”按钮由灰色禁用状态变成了可用状态,此时单击“调用历史记录”即可生成所有参数,然后单击“生成标签”即可。...
  • 注:快递鸟官网后台显示的信息和状态(如:“我的物流服务商”页面显示顺丰或顺丰月结账号)并影响接口的客户,也需要在后台添加要使用的客户号,直接通过接口传值下单即可; 3、 购买打印机、打印纸 打印机...
  • webpack4采坑二:分开打包js和css文件

    千次阅读 2018-12-17 17:43:46
    网上有很多关于如何分开打包js和css文件,发现存在有很多问题(比如:webpack3配置和webpack4配置有些不同、文章内容全面等),采坑过程中走了很多歪路 以下直接贴出代码 1、package.json配置 采坑点:webpack4...
  • 好处是能让编译出来的程序节省几个字节的大小,另外能让你在写源码的时候少几个字,因为不用弄数据段了嘛, 不过在写大程序的时候最好是把数据段和代码段分开,因为那样更清晰.当然如果你认为把数据和代码放在一起更...
  • springboot基于spring-boot-maven-plugin打包时会把所有依赖的jar,yml,properties,xml到一个jar中,如果需要修改配置文件更换jar包非常方便,能成以下结构? 通过pom文件使用mvn package 一建打包 lib:...
  • 用什么编译执行(1)gcc/g++(2)VSCode(3)Cmake二、工程式头文件:声明和实现分开1.实现2.编译执行(1)gcc/g++(2)Cmake(3)VScode 一、简单的头文件:声明和实现写在一起 1.实现 c和c++一样,这里拿c++...
  • springboot成jar包无法访问jsp

    千次阅读 2019-04-17 23:44:53
    以前老项目迁成springboot项目,里面有jsp页面,但是在成jar包后,使用java -jar xxx.jar 发现并能访问jsp页面,但其他接口能正常使用。ps:项目如果是直接从启动类main方法启动是可以访问。 存在问题 一、jar...
  • Python 打印和输出

    万次阅读 多人点赞 2017-06-06 20:36:03
    将对象输出到文本流文件,由 sep 分开,然后以 end 结束。如果 sep、end、file 和 flush 出现,则必须以关键字参数的形式指定。 使用关键字参数 print 函数可以打印任意数量的值(value1, value2, …),...
  • 但是发现Mac连接热点后,只能登录微信,网页打不开。琢磨了有一会,发现了问题所在: 说明:网页无法打开的原因就在于连接个人热点后,没有配置DNS服务器IP。因为大多数因特网服务依赖于 DNS 而工作,一旦 DNS 出错...
  • Android studio 打不开官方虚拟机 100%成功解决方法

    万次阅读 热门讨论 2018-06-06 12:26:49
    网上的教程乱七八糟的,试了好久,就是在...250M分开成2部分上传,记得全加进去 第一部分 : https://download.csdn.net/download/zhw0596/10462029 第二部分 :https://download.csdn.net/download/zhw0596/10462038
  • 长图PDF如何分页打印?

    千次阅读 2021-01-06 11:08:08
    经常可以看到PDF长图,有的时候我们只想打印PDF页面一半的内容,或者是将PDF一页的内容分成两张纸打印,该...这个打印方法比较快速,需要进行PDF分割,以上就是关于福昕阅读器“PDF如何分页打印”的操作方法啦! ...
  • GitLab用命令建立分支Tag

    万次阅读 2018-03-26 11:41:17
    2、Tag是为了对每次发布节点对应版本的代码做备份,流程就是对master下的这份代码,先建立分支后Version1.0.3—再提交到本地—再给当前代码标签V1.0.3——先提交代码到分支Version1.0.3—再提交代码到标签V1.0.3...
  • Android Studio无响应打不开的解决办法

    万次阅读 2017-07-13 15:16:47
    谷歌最近发了文章说将在年底前停止对Eclipse Android开发工具的一切支持,于是就准备转向AndroidStudio了,开始是在公司的电脑上安装的,装了之后双击打不开,还以为是公司的电脑配置太差,带动,于是回去在自己的...
  • 才开发几个界面就发现打包出的index.js...第一步:在项目跟目录下面添加一个webpack.config.js文件第二步:为了将原有的js分开打,需要修改entry的指定webpackConfig.entry={ "index": "./src/index.js", vendor: ve
  • 利用for循环打印出不同的三角形

    千次阅读 2017-11-08 20:34:36
    1打印出尖朝上的三角形 for(int i=0;i  for(int j=0;j  System.out.print("*");  }  System.out.println(); } 2打印出尖朝下的三角形 for(int i=0;i  for(int j=i;... System.out.print("*
  • excel怎么在单元格规则的内容里将姓名分列?B1输=IF(ISNUMBER(--RIGHT(A1)),LEFT(MID(A1,FIND(",",A1) 1,99),LENB(MID(A1,FIND(",",A1) 1,99))-LEN(MID(A1,FIND(",",A1) 1,99))),RIGHT(MID(A1,FIND(",",A1) 1,...
  • C语言打印菱形

    万次阅读 多人点赞 2019-03-22 19:58:23
    |n/2-i|-2的值除了首尾两行外,其他都与空格菱形的空格个数一致,而首尾两行是-1表示在该处空格反而需要退一个格,但由于我们当前位置为 号,而退格后依旧要 号,所以我们可以直接判断是否为第一行或最后一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,831
精华内容 69,932
关键字:

不分开打