• 【DWR系列06】- DWR日志及js压缩


    一、日志

      DWR依赖 Apache Commons Logging,可以使用log4j实现日志记录功能。

    1.1 日志简介

      和其他日志框架一样,当设置低等级的日志时所有高于此等级的日志也将会打印出来。DWR日志分为以下四种:

    • CALL:最详细的记录,将记录所有输入输出的DWR请求。
    • EXCEPTION:将记录所有的可检查异常。
    • RUNTIMEEXCEPTION:将记录所有运行时异常。
    • ERROR:将记录所有Errors。

      所有的日志将会统一输出到同一个logger - org.directwebremoting.log.accessLog,这将允许应用程序很方便的从其它应用日志中抽离出DWR日志。

    1.2 日志设置

      通过在servlet中添加参数即可:

    <init-param>
        <param-name>accessLogLevel</param-name>
        <param-value>EXCEPTION</param-value>
    </init-param>

      debug模式下,默认开启EXCEPTION级别的日志,可以被有效的日志设置进行修改。

      非debug模式中,不指定日志级别或者指定错误的日志级别,所有级别的日志将不会输出。

    1.3 配置log4j

      使用log4j需要log4j的jar包和配置文件,下面展示一个简单的例子:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
      <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
        <param name="Target" value="System.out"/> 
        <layout class="org.apache.log4j.PatternLayout"> 
          <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
        </layout> 
      </appender> 
    
      <appender name="dwrLogFile" class="org.apache.log4j.FileAppender">
         <param name="File" value="C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/dwr/log/dwrAccess.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="DEBUG"/>
         <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
         </layout>        
      </appender>
      
      <appender name="otherFile" class="org.apache.log4j.FileAppender">
         <param name="File" value="C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/dwr/log/other.log"/>
         <param name="Append" value="true"/>
         <param name="Threshold" value="DEBUG"/>
         <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
         </layout>        
      </appender>
      
      <!-- 所有的application exceptions/errors日志输出到这里 -->  
      <category name="org.directwebremoting.log.accessLog">
         <priority value="INFO"/>
         <appender-ref ref="dwrLogFile" />
      </category>
      
      <!-- 所有的启动信息输出到这里 --> 
      <category name="org.directwebremoting.log.startup">
         <priority value="DEBUG"/>
         <appender-ref ref="dwrLogFile" />
      </category>
      
      <!-- 所有的script脚本信息输出到这里 --> 
      <category name="org.directwebremoting.log.scripts">
         <priority value="DEBUG"/>
         <appender-ref ref="dwrLogFile" />
      </category>
      
      <!-- 所有的session信息输出到这里 --> 
      <category name="org.directwebremoting.log.session">
         <priority value="DEBUG"/>
         <appender-ref ref="dwrLogFile" />
      </category>
      
      <!-- 其它信息包括内部错误信息输出到这里 -->
      <root>
        <priority value="DEBUG" /> 
        <appender-ref ref="otherFile" />
      </root>
    
    </log4j:configuration>

    1.4 DWR日志和普通日志关系

      看到这里应该可以发现DWR应用着两种日志配置,一种是commons-logging的通用日志级别,还有一种是自己的日志级别,可以从以下源码看出:

      上面的代码是DWR应用于日志框架进行的日志记录,自己的日志记录:

      可以发现DWR自己的日志是在通用日志级别上又套了一层日志,而且是info级别的,因此建议,开发阶段通用日志级别设置为debug,DWR日志级别设置为call,生成阶段时,通用日志级别设置为info,DWR日志级别不设置即可。

    二、js压缩

      通常情况下,js文件越多,网页打开越慢,所以一般都会对js文件进行处理,比如压缩或者合并。

    2.1 DWR对js的处理

      当在DWR的非debug模式下,DWR会自动检测是否在classpath下发现dojo-shrinksafe.jar或者yuicompressor.jar,若发现则将自动启用压缩。

    2.2 自定义压缩

      当然你也可以通过实现org.directwebremoting.extend.Compressor接口,来实现自己的压缩算法。并进行如下配置:

    <init-param>
        <param-name>org.directwebremoting.extend.Compressor</param-name>
        <param-value>com.example.Compressor</param-value>
    </init-param>

    2.3 使用jawr

      当然值得试一下jawr,jawr专门为DWR提供了插件。jawr有各种好处,后续会对其进行介绍。

  • 相关阅读:
    Spring Boot确保Web应用安全(登陆认证)
    ubuntu kylin 18.04安装docker笔记
    Spring Boot项目中MyBatis连接DB2和MySQL数据库返回结果中一些字符消失——debug笔记
    node.js运行内存堆溢出的解决办法
    [转]Maven项目读取src.main.resources下的文件
    Linux下切换用户根目录的指令
    Example config file /etc/vsftpd.conf
    一个可以让vsftpd启动系统用户登陆ftp的例子
    [转]将西部数据 My Passport Wireless 移动存储连接到任何支持的云存储上
    Java连接阿里云HBase示例
  • 原文地址:https://www.cnblogs.com/yiwangzhibujian/p/6187118.html
Copyright © 2020-2023  润新知