`
agan112
  • 浏览: 69651 次
  • 来自: 金陵那平
社区版块
存档分类
最新评论

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代码
<?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)
)
分享到:
评论

相关推荐

    struts2,(slf4j-log4j12-1.5.8—日志) 建议360压缩解压

    在"slf4j-log4j12-1.5.8"这个包中,包含了SLF4J的API接口和Log4j的具体实现,使得开发者能够方便地将日志记录集成到Struts2应用中。 Struts2的基础jar包通常包含以下组件: 1. `struts2-core`: 这是Struts2的核心...

    log4j-2.7api+core包

    由于Struts2框架中广泛使用了Log4j进行日志记录,攻击者可能利用Log4j的特性来触发漏洞。更新到安全的Log4j版本,如2.7,可以降低这种风险。 4. **log4j2.xml配置**:`log4j2.xml`是Log4j 2.x的配置文件,定义了...

    搭建SSH框架需要引入的Struts2包(log4j,spring-web,struts2-spring-plugin)

    Log4j提供了丰富的配置选项,允许开发者定制日志级别、输出格式和目的地,使得在项目运行过程中可以方便地收集和分析信息。 在实际搭建SSH框架时,我们需要将这些jar文件添加到项目的类路径中。对于Struts2和Spring...

    tomcat下struts2的log4j日志配置.doc

    在这个例子中,`struts.log4j.rootLogger`定义了日志的基本级别和输出目标,其他常量则指定了具体的输出格式和Appender。 总的来说,配置Tomcat下的Struts2日志系统主要涉及以下几个步骤: 1. 添加Log4j库到项目类...

    Struts2+log4j

    Struts2是一个强大的MVC(Model-View-Controller)框架,它提供了丰富的功能来简化Java Web应用的开发,而Log4j则是一个广泛使用的日志记录库,为开发者提供了灵活的日志记录机制。 Struts2框架是Apache软件基金会...

    log4j-core-2.7.zip

    这两个JAR包需要添加到项目的类路径(classpath)中,以便Struts2框架可以正确地使用Log4j2进行日志记录。 同时,描述还强调了将`log4j2.xml`配置文件放置在classpath目录下。`log4j2.xml`是Log4j2的配置文件,定义...

    log4j.1.2.17

    Log4j与其他框架如Spring、Struts等有良好的集成,可以方便地在这些框架中使用日志功能。此外,通过添加插件,还可以将日志信息发送到syslog、SMTP、JMS等其他目的地。 总结来说,Log4j 1.2.17作为一个成熟的日志...

    slf4j-log4j12-1.6.1.jar+slf4j-api-1.6.1.jar

    SLF4J(Simple Logging Facade for Java)和Log4j是Java开发中常用的日志处理框架,它们在构建SSH(Struts、Spring、Hibernate)和MVC(Model-View-Controller)架构的Web应用程序时扮演着至关重要的角色。...

    jxl.jar;dom4j.jar;jsonplugin-0.34.jar;junit-3.8.2.jar;log4j-1.2.14.jar;struts2-codebehind-plugin-2.0

    这些库的组合表明这是一个可能用于企业级Java Web开发的环境,涵盖了数据处理(jxl)、XML操作(dom4j)、JSON序列化、单元测试(JUnit)、日志管理(Log4j)以及MVC框架(Struts2)等关键方面。对于理解和构建此类...

    struts2.5.14.1最少的jar包

    `log4j2.xml`文件是Log4j2的配置文件,用于设置日志级别、输出目的地和格式等参数。 在开发环境中,除了这8个核心JAR和Log4j,可能还需要其他的依赖库,例如数据库驱动、国际化支持等,这取决于具体的应用需求。`...

    struts日志

    要集成Log4j到Struts应用中,你需要在项目中包含Log4j的JAR文件,并创建一个`log4j.properties`或`log4j.xml`配置文件,定义日志级别(DEBUG, INFO, WARN, ERROR, FATAL)和输出目的地(控制台、文件、网络等)。...

    Strtus2.3升级2.5(包含log4j升级log4j2)所需jar,和相关资料

    从Log4j升级到Log4j2,可以享受到更高效的日志处理、异步日志记录、动态配置以及支持JSON和XML等格式的日志输出。 在Struts2.3到Struts2.5的升级中,首先需要确保所有依赖的jar文件都与新版本兼容。这包括Struts2的...

    struts-2.3.16.1-lib.zip

    - `slf4j-api.jar`和`slf4j-log4j12.jar`:简单日志门面(SLF4J)接口和Log4j实现,用于日志记录。 3. **依赖的Apache Commons库**: - `commons-fileupload.jar`:处理HTTP文件上传功能。 - `commons-lang3.jar...

    struts-2.3.16.3所有jar包

    - `slf4j-api.jar`/`slf4j-log4j12.jar`:Simple Logging Facade for Java,提供日志适配器,允许选择不同的日志实现。 6. **配置与使用**: - 开发者需要在`web.xml`中配置Struts 2的前端控制器(`...

    struts-2.3.34-lib

    4. **Commons Logging** 和 **Log4j**:这些日志库用于记录应用的运行信息,帮助开发者调试和优化代码。 5. **Servlet API** 和 **JSTL (JavaServer Pages Standard Tag Library)**:这些是Java Web开发的基础库,...

    struts-2.3.32必备的jar包

    9. **commons-logging-1.1.3.jar**:Apache Commons Logging是日志记录的抽象层,允许开发者选择底层的日志实现,如log4j或java.util.logging。Struts2通过这个库进行日志输出,便于调试和问题排查。 10. **asm-3.3...

    struts2.3.20和log4j1.2.9完整开发jar包

    Struts2是基于MVC(Model-View-Controller)设计模式的开源Web应用程序框架,它极大地简化了Java Servlets和JSP(JavaServer Pages)的开发工作,而Log4j则是Apache组织提供的一个用于记录日志的开源工具,它具有...

    log4j日志使用说明

    #### 四、使用Log4j记录日志 为了在Java代码中使用Log4j,首先需要引入Log4j的API。 **示例代码:** ```java import org.apache.log4j.Logger; public class MyClass { protected final Logger log = Logger....

    Log4j日志文档和Log4j包

    10. **与其他框架的集成**:许多Java框架,如Spring、Struts等,都内置了对Log4j的支持,开发者可以无缝地将日志记录整合到应用中。 了解并熟练掌握Log4j的使用,对于Java开发者来说是提高开发效率和维护质量的重要...

    struts-2.3.4.1 lib

    `log4j.jar`为日志记录框架。 5. **JSON支持**:如`struts2-json-plugin.jar`,允许Struts2应用直接输出JSON格式的数据,便于与AJAX或JavaScript进行交互。 6. **国际化和本地化**:`struts2-i18n-plugin.jar`支持...

Global site tag (gtag.js) - Google Analytics