`

Struts-输出日志-使用log4j(转)

阅读更多
1。什么是日志:
  程序运行时,往特定输出文件或数据库里输出程序信息,
   如:出错信息,运行记录,调试记录,等等。
 
    日志(LOG)一般分为以下几种类型。
    FATAL:系统错误(大错误)(程序被错误中断)
           系统出现大错误时输出(程序无法处理的大错误,如硬件错误)
    ERROR:异常(程序被错误中断)
           程序运行时出现的错误(程序员可以捕获处理)
    WARN :警告(程序不会中断)
           程序不算出错,但以不推荐方式运行时输出。
    INFO : 信息(程序不会中断)
           程序中有意输出的信息,如程序运行信息,
           如“程序开始”“程序结束”等。
    DEBUG: 调试记录(程序不会中断)
           调试程序时,跟踪程序运行的输出信息。
2.Log4J的使用。
    Log4J是为了输出日志的Java程序包,是Apached的一个子项目。
    可在http://logging.apache.org 下载并免费使用。
    可以把LOG输出到,控制台,文件,或数据库。
    这个网址里有很多Log4程序包,他们分别是,
    log4c          -- ANSI C 版
    log4E          -- Eiffel 版
    log::Log4perl  -- Perl 版
    log4net        -- .NET 版
    log4r          -- Ruby 版
    log4j          -- Java版
 
3.Log4J的能输出LOG的优先级。
级别高 OFF   关闭所有LOG
        FATAL 不可预想的无法继续运行程序的场合,一般是写进syslog(
              系统日志),在应用程序中很难捕获。
        ERROR 出现异常,应用程序停止运行等,需要紧急对应的程度的错误。
        WARN  警告,以不建议的方式运行。
        INFO  信息,实际运行中最基本程度的信息,如,启动服务器,
              运行某某程序或方法,运行结束等。
        DEBUG 调试时输出的信息,有可能产生非常大量的LOG文件。
              如为解决问题而设置输出断点LOG等。DEBUG调试时输出的
              信息,所以投入运行时一般关闭DEBUG级别的LOG
       tracever log4j的 1.2.12 新加入比DEBUG还小的断点。
级别低 ALL    打开所有LOG
 
4.Struts使用Log4J。
    项目里的,[JavaSource]下做一个,log4j.xml或log4j.properties以后
    Struts就可以使用Log4J了,log4j.xml,log4j.properties是Log4J的
    设置文档。struts先读入log4j.xml,要是没有再读入log4j.properties。
    我认为log4j.xml更容易理解,而且可以做到赛选各种级别LOG后输出
   (log4j.properies无法赛选),所以只讲log4j.xml。
 
5.Log4j.xml设置方法。
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration   xmlns:log4j='http://jakarta.apache.org/log4j/'>

<!-- org.apache.log4j.ConsoleAppender (输出到控制台),
     org.apache.log4j.FileAppender    (输出到文件),
     org.apache.log4j.DailyRollingFileAppender

                            (每天输出产生一个日志文件),
     org.apache.log4j.RollingFileAppender

               (文件大小到达指定尺寸的时候产生一个新的文件),

                可通过 log4j.appender.R.MaxFileSize=100KB 设置文件

                大小,还可通过 log4j.appender.R.MaxBackupIndex=1

                设置为保存一个备份文件。
     org.apache.log4j.WriterAppender

               (将日志信息以流格式发送到任意指定的地方) -->
 
<!-- 输出通道"STDOUT",输出所有信息到控制台

               (也就是System.out.println()) -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
 <!--org.apache.log4j.HTMLLayout    (以 HTML 表格形式布局),
  org.apache.log4j.PatternLayout (可以灵活地指定Log内容布局模式),
  org.apache.log4j.SimpleLayout  (包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout   

                     (包含日志产生的时间、线程、类别等等信息) -->
 <!-- 输出自定义内容的LOG -->
 <layout   class="org.apache.log4j.PatternLayout">
  <!--
   %m 输出代码中指定的消息
   %p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
   %r 输出自应用启动到输出该 log 信息耗费的毫秒数
   %c 输出打了Log的类名,%c{1}从类名开始输出一个,

      例如com.tongshida.Action,{1}时只输出Action,

          {2}输出 tongshida.Action
   %C 输出.Error()方法所在的类。
   %M 输出生成LOG的类当中的方法名称
   %t 输出产生该日志事件的线程名
   %n 输出一个回车换行符, Windows 平台为 “rn”,Unix 平台为 “n”
   %d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在

      其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似:

      2002 年 10 月 18 日 22 : 10 : 28 , 921
   %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中

      的行数。
   %[数值]p 输出的%p字符串长度小于[数值]时,补空格,默认右对齐,

      前加-号,左对齐,这里也可以是%m等别的
   %.[数值]p输出的%p字符串长度大于[数值],后面切掉。
   %[数值].[数值]p 就是综合上两行。
   -->
  <!-- 输出时Log内容的具体定义 -->
  <param name="ConversionPattern"

     value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
</appender>

<!-- 输出通道"DEBUG",输出方式是:只输出DEBUG级别的LOG,并文件

      大小到达指定大小时产生新的Log文件 -->
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
 <!-- 输出Log文件的路径和文件名 -->
 <param name="File" value="logs/debug/debug.log"/>
 <!-- TOMCAT等WEB服务器重新启动时,是否插入到原有的LOG文件里,

      true 插入false 新建 -->
 <param name="Append" value="true"/>

 <!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
 <!-- param name="Threshold" value="info"/ -->
 
 <!-- 因选择了RollingFileAppender了才有下面两个 MaxFileSize,

      MaxBackupIndex 选项 -->
 <!-- MaxFileSize是一个LOG文件的最大的文件大小,当LOG文件超过这个

      值时,自动转成 *.log.1的LOG文件 -->
 <param name="MaxFileSize" value="500KB"/>
 <!-- MaxBackupIndex生成自动转成 *.log.1的LOG文件的个数,设置3时最多

      生成3个LOG备份文件,它们是[*.log.1][*.log.2][*.log.3] -->
 <param name="MaxBackupIndex" value="2"/>
 <!-- 输出时Log内容的具体定义 -->
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

        value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <!-- 过滤输出时Log内容,在这里,LevelMin,LevelMax都定义了DEBUG,

        所以只输出DEBUG级别LOG的数据 -->
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <!-- 指定输出LOG内容的最低等级 -->
  <param name="LevelMin" value="DEBUG"/>
  <!-- 指定输出LOG内容的最高等级 -->
  <param name="LevelMax" value="DEBUG"/>
 </filter>
</appender>
<!-- 输出通道"INFO",输出方式是:只输出INFO级别的LOG,并文件大小

     到达指定大小时产生新的Log文件 -->
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="logs/info/info.log"/>
 <param name="Append" value="true"/>
 <param name="MaxFileSize" value="500KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

      value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <filter   class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="INFO"/>
  <param name="LevelMax"   value="INFO" />
 </filter>
</appender>
<!-- 输出通道"WARN",输出方式是:只输出WARN级别的LOG,并文件

     大小到达指定大小时产生新的Log文件 -->
<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
 <param   name="File" value="logs/warn/warn.log"/>
 <param name="Append" value="true"/>
 <param name="MaxFileSize" value="500KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

      value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="WARN"/>
  <param name="LevelMax" value="WARN"/>
 </filter>
</appender>
<!-- 输出通道"ERROR",输出方式是:只输出ERROR级别的LOG,并文件

     大小到达指定大小时产生新的Log文件 -->
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="logs/error/error.log"/>
 <param name="Append" value="true"/>
 <param name="MaxFileSize" value="500KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

       value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="ERROR"/>
  <param name="LevelMax" value="ERROR"/>
 </filter>
</appender>
<!-- 输出通道"FATAL",输出方式是:只输出INFO级别的LOG,并文件大小

     到达指定大小时产生新的Log文件 -->
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="logs/fatal/fatal.log"/>
 <param name="Append" value="true"/>
 <param name="MaxFileSize" value="500KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

       value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="FATAL"/>
  <param name="LevelMax" value="FATAL"/>
 </filter>
</appender>
<!-- 输出通道"ALL",输出方式是:输出所有级别的LOG,并文件大小到达

     指定大小时产生新的Log文件 -->
<appender name="ALL" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="logs/all/all.log"/>
 <param name="Append" value="true"/>
 <param name="MaxFileSize" value="500KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern"

      value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
 </layout>
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="DEBUG"/>
  <param name="LevelMax" value="FATAL"/>
 </filter>
</appender>
<!-- 输出通道"EVERYDAY",输出方式是:输出所有级别的LOG,并每天一个

     日志文件 -->
<appender name="EVERYDAY" class="org.apache.log4j.DailyRollingFileAppender">
 <param name="File" value="logs/ereryday/ereryday.log"/>
 <param name="Append" value="true"/>
    <!-- param name="Threshold"   value="DEBUG"/ -->  
 <!-- 以日为单位输出LOG文件,每日输出一个LOG文件-->
 <param name="DatePattern" value="'.'yyyy-MM-dd"/>
 <!-- 以时为单位输出LOG文件,每小时输出一个LOG文件
 <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
 -->
 <layout class="org.apache.log4j.PatternLayout">
  <!-- The default pattern: Date Priority [Category] Message -->
  <param name="ConversionPattern"

   value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
  <!-- The full pattern: Date MS Priority [Category] (Thread:NDC)

       Message <param name="ConversionPattern"

       value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
  -->
 </layout>
 <!-- 过滤输出时Log内容,在这里,LevelMin是DEBUG,LevelMax都FATAL,

      所以输出DEBUG级别到FATAL级别的LOG数据 --> 
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="DEBUG"/>
  <param name="LevelMax" value="FATAL"/>
 </filter>
</appender>

<!-- 输出通道"DATABASE",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">
        <!--数据库的驱动,这里用的是MSSQL-->
        <param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
  <!--这是Oracle用的驱动,在这里用MSSQL所以屏蔽掉了
     <param name="driver" value="oracle.jdbc.driver.OracleDriver" />
  -->
        <!--要连接的数据库-->
        <param name="URL" 

                  value="jdbc:microsoft:sqlserver://192.168.0.120:

                  1433;DatabaseName=test" />
       <!--连接数据库的用户名-->
        <param name="user" value="sa" />
      <!--连接数据库的密码-->  
        <param name="password" value="sa" />
      <!--向MSSQL数据库表LOG中插入数据的sql语句-->
        <param name="sql" value=" INSERT INTO LOG

           (LOGDATE,LOGLEVEL,LOGCLASS,LOGLOGGER,LOGMESSAGE)

           values ('%d{yyyy-MM-dd HH:mm:ss}','%.50p', '%.50c',

                   '%.50l', '%.1000m')"/>

 

  <!-- Oracle 的 insert 语句
        <param name="sql" value=" insert into logrecord

       (id,packageid,userid,syscodeid,info,logtime,loglevel)

       values(?,?,?,?,?,to_date('%d{yyyy-MM-dd HH:mm:ss}',

       'yyyy-MM-dd HH24:mi:ss'),'%p')" />
  -->
  <!-- 过滤输出时Log内容,在这里,LevelMin是ERROR,LevelMax都

       FATAL,所以输出DEBUG级别到FATAL级别的LOG数据 --> 
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMin" value="ERROR"/>
   <param name="LevelMax" value="FATAL"/>
  </filter>
 </appender>
 
<!-- 输出通道"HTML",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="HTML" class="org.apache.log4j.RollingFileAppender">
 
 <param name="File" value="logs/html/htmllog.html" />
 <param name="Append" value="true" />
 
 <!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
 <!-- param name="Threshold" value="info"/ -->
 <param name="MaxFileSize" value="50KB"/>
 <param name="MaxBackupIndex" value="2"/>
 <!-- 好像现在只有固定输出格式 --> 
 <!-- 输出的HTML都缺少</table></body>等代码,log4j的Bug?

      我建议是不要使用 -->  
 <layout class="org.apache.log4j.HTMLLayout">
  <param name="Title" value="TSD HP HTML LOG" />
 </layout>
 <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="LevelMin" value="DEBUG"/>
  <param name="LevelMax" value="FATAL"/>
 </filter> 
</appender>

<!-- 设置域名限制,即com.tongshida域及以下的日志均输出到下面

     对应的通道中, 虽然下面<roo>的<priority value="ERROR">设置

     成ERROR,但com.tongshida下面的程序中的LOG要输出

     level="DEBUG"的 DEBUG级别以上的LOG-->
<!--给客户交货时要把它屏蔽-->
<logger name="com.tongshida">
 <!-- 设置com.tongshida以下函数输出LOG的级别 -->
 <level value="DEBUG"/>
 <!-- 好像是指定输出通道,因为下面root里指定了所以这里屏蔽掉了
 <appender-ref ref="DEBUG"/>
 -->
</logger>

<root>
 <!-- 设置输出范围,在这里光输出ERROR以上的,ERROR级别,

      FATAL级别的LOG -->
 <priority value="ERROR"/>
 <!-- 上边设置的输出通道,使用的在这里定义 -->
 <appender-ref ref="STDOUT"/>
 <appender-ref ref="DEBUG"/>
 <appender-ref ref="INFO"/>
 <appender-ref ref="WARN"/>
 <appender-ref ref="ERROR"/>
 <appender-ref ref="FATAL"/>
 <appender-ref ref="ALL"/>
 <appender-ref ref="EVERYDAY"/>
 <appender-ref ref="DATABASE"/>
 <appender-ref ref="HTML"/>

</root>
</log4j:configuration>

 
 

6.Log4j在Java程序里的使用。

  Logger log = Logger.getLogger(inputClass);

  //输出到数据库时有"'"会出错所以把它换成全角
  String outmessage = message.replaceAll("'", "’");
  log.debug(outmessage);
log.error(outmessage);log.warn(outmessage);

  如想要动态输出LOG(更改输出目录和文件名),也就是强制改变读到

  内存中的[Log4j.xml]里的相应输出目录和文件名。鉴于篇幅没能写下。

 

7.MSSQL_log_table_Creater.sql

CREATE TABLE [LOG] (

        ID                 INTEGER NOT NULL PRIMARY KEY,

        LOGDATE            DATETIME,

        LOGTIME            TIMESTAMP,

        LOGTHREAD          VARCHAR(50),

        LOGLEVEL           VARCHAR(50),

        LOGCLASS           VARCHAR(50),

        LOGLOGGER          VARCHAR(200),

        LOGMESSAGE         VARCHAR(2000)

)

 
分享到:
评论

相关推荐

    tomcat下struts2的log4j日志配置.doc

    tomcat下struts2的log4j日志配置.doc

    ssh ,log4j实例

    SSH框架整合实战项目,log4j完整的配置文件(log4j.perproties,log4j.xml),日志可输出到控制台、本地文件、数据库,提供多种配置方法,项目可直接运行,SQL语句在项目中。该项目对学习spring,struts2,hibernate,log...

    java中log4j的扩展写法

    log4j有些引用不是很方便我在这里进行了扩展,可以支持struts,ibtais,和自己的要输出的日志。

    MyEclipse_9创建SSH2开发环境必须的独立包

    struts2 相关包-------------------------------------------------- xwork-2.0.5.jar webwork的核心库 ognl-2.6.11.jar OGNL...slf4j-log4j12-1.5.0.jar slf4j log4j支持包 log4j-1.2.15.jar slf4j-api-1.5.0.jar

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    精通Struts基于MVC的Java Web设计与开发 孙卫琴 光盘

    内容推荐 Struts是目前非常流行的基于MVC的Java ...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    精通 Struts:基于 MVC 的 JavaWeb 设计与开发(PDF)

    Struts是目前非常流行的基于MVC的Java Web框架。...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    Struts2SpringMybatis 增删改查

    Struts2SpringMybatis 增删改查,里面的Struts2,spring,Mybatis配置文件都是模块化的管理,实现了社会版本的配置,不再是个人玩弄的小项目。具体的 sql语句也已经加到了WEBRROT...还添加了日志输出 log4j.properties.

    web开发常用jar

    slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-...

    精通Struts_基于MVC的Java Web设计与开发

    Struts是目前非常流行的基于MVC的Java Web框架。...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    精通struts:基于mvc的java web设计与开发part3

    Struts是目前非常流行的基于MVC的Java Web框架。...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    精通struts:基于mvc的java web设计与开发part2

    Struts是目前非常流行的基于MVC的Java Web框架。...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    精通struts:基于mvc的java web设计与开发part1

    第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。 这个真的是包含所有的源码。。。

    java开发常用jar包

    slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-1.3....

    《程序天下:J2EE整合详解与典型案例》光盘源码

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    基于MVC的java Web设计与开发

    Struts是目前非常流行的基于MVC的Java Web框架。...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

    网上商城需求报告

    log4j:日志工具,用于输出日志信息.主要在业务层和数据访问层使用 junit:单体测试工具,用于测试业务或者数据访问方法 -----------项目开发流程------------ UML模型图:IBM Rose,Microsoft Visio E-R模型图:...

    java后台框架源码

    filter:Log4jFormatFilter(格式化log4j日志输出的),SessionCheckFilter(登陆拦截器) interceptor:权限拦截包 listener:目前只有session的监听器,用于监听session的 service:具体的业务处理包 util:项目工具包 ...

Global site tag (gtag.js) - Google Analytics