- 浏览: 91563 次
- 性别:
- 来自: 北京
最新评论
-
jinkingmanager:
看了,感觉好温馨啊
十年之恋,七年之痒 -
bevis.cn:
我有遇到问题,我用response.sendRedirect( ...
怎么使用SSL -
liudaoru:
按照分钟切割日志:log4j.appender.A1.Date ...
log4j 按时间、大小产生新的日志文件 -
xuehu2010:
你好!请问我如果想用servlet做服务器端,用applet做 ...
Socket编程 -
lb_yyy:
xiexei
请问:log4j.appender.R.F ...
log4j 按时间、大小产生新的日志文件
log4j的基本概念
使用log4j大概涉及3个主要概念:
公共类 Logger Logger 负责处理日志记录的大部分操作。
公共接口 Appender Appender 负责控制日志记录操作的输出。
公共抽象类Layout Layout 负责格式化Appender的输出。
3.1.Logger
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):
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是最高等级的,用于关闭所有日志记录。 日志记录器(Logger)的行为是分等级的。如下表所示:
图.日志输出等级 Logger Output Hierarchy
日志记录器(Logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(Logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(Logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(Logger)的级别。如果在com.foo中没有创建日志记录器(Logger)的话,那么在com.foo.bar中创建的日志记录器(Logger)将继承root 日志记录器(Logger)的级别,root日志记录器(Logger)经常被实例化而可用,它的级别为DEBUG。
有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:
Logger logger = Logger.getRootLogger();
还可以这样创建一个新的日志记录器: Logger logger = Logger.getLogger("MyLogger");
比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:
static Logger logger = Logger.getLogger(test.class);
所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:
logger.setLevel((Level)Level.WARN);
可以使用7个级别中的任何一个; Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.
3.2.Appender
Appender 控制日志怎样输出。下面列出一些可用的Appender(log4j API中所描述的 http://jakarta.apache.org/log4j/docs/api/index.html):
1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。
2. DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。
3. FileAppender 把日志事件写入一个文件
4. RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。
5. WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。
6. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。
7. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
8. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
9. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。
10. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。
还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。
3.2.1.使用ConsoleAppender
ConsoleAppender可以用这种方式创建:
ConsoleAppender appender = new ConsoleAppender(new PatternLayout());
创建了一个控制台appender,具有一个默认的PatternLayout。它使用了默认的System.out 输出。
3.2.2.使用FileAppender
FileAppender可以用这种方式创建:
上面用到的构造函数:
FileAppender(Layout layout, String filename)
实例化一个FileAppender并且打开变量"filename"指定的文件。
另一个有用的构造函数是:
FileAppender(Layout layout, String filename, boolean append)
实例化一个FileAppender并且打开变量"filename"指定的文件。
这个构造函数还可以选择是否对指定的文件进行追加的方式输出。如果没有指定值,那么默认的方式就是追加。
3.2.3.使用WriterAppender
WriterAppender可以用这种方式创建:
这个WriterAppender使用的构造函数带有PatternLayout和OutputStream参数,在这种情况下, FileOutputStream用于向一个文件输出。当然,它还具有其他可用的构造函数。
3.3.Layout
Appender必须使用一个与之相关联的 Layout,这样它才能知道怎样格式化它的输出。当前,log4j具有三种类型的Layout:
1. HTMLLayout 格式化日志输出为HTML表格。
2. PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。
3. SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。
3.4.基本示例
3.4.1.SimpleLayout和 FileAppender
这里是一个非常简单的例子,程序实现了SimpleLayout和FileAppender:
你可以下载: simpandfile.java。 还可以查看它的输出: output1.txt.
3.4.2.HTMLLayout和 WriterAppender
这里是一个非常简单的例子,程序实现了 HTMLLayout和WriterAppender:
你可以下载: simpandfile.java. 还可以查看它的输出:output1.txt. 3.4.3.PatternLayout和 ConsoleAppender
这里是一个非常简单的例子,程序实现了PatternLayout和ConsoleAppender:
你可以下载:simpandfile.java. 还可以查看它的输出: output2.txt. 4.使用外部配置文件
Log4j经常与外部日志文件联合使用,这样很多可选项不必硬编码在软件中。使用外部配置文件的优点就是修改可选项不需要重新编译程序。唯一的缺点就是,由于用到io 指令,速度稍微有些减慢。
有两个方法可以用来指定外部配置文件:文本文件或者XML文件。既然现在所有事情都写成XML文件,那么该教程就重点讲解XML文件方法,但是也包含相关文本文件的例子。首先,看看下面的XML配置文件示例:
文件以标准的XML声明作为开始,后面跟着指出DTD(文档类型定义)的DOCTYPE声明,它定义了XML文件的结构,例如,什么元素可以嵌入在其他元素中等等。上面文件在log4j发行版的src/java/org/apache/log4j/xml目录中。 接着看看封装所有元素的 log4j:configuration 元素,它在DOCTYPE声明中被指定为根元素。嵌入在根元素中有两个结构: <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout"/>
</appender>
这里创建一个名叫"ConsoleAppender"的 Appender,注意,你可以选择任何名字,该示例之所以选择"ConsoleAppender",完全是为了示例的设计。接着这个appender类以全名形式给出,经常用规范(fully qualified)类名。 Appender必须具有一个指定的 name和class。嵌入在 Appender之内的是 layout元素,这里它被指定为SimpleLayout。 Layout 必须具有一个 class属性。
<root>
<priority value ="debug" />
<appender-ref ref="ConsoleAppender"/>
</root>
root元素必须存在且不能被子类化。示例中的优先级被设置为"debug",设置appender饱含一个appender-ref元素。还有更多的属性或元素可以指定。查看log4j发行版中的src/java/org/apache/log4j/xml/log4j.dtd以了解关于XML配置文件结构的更多信息。可以用下面这种方法把配置信息文件读入到Java程序中: DOMConfigurator.configure("configurationfile.xml");
DOMConfigurator 用一棵DOM树来初始化log4j环境。这里是示例中的XML配置文件:plainlog4jconfig.xml。这里是执行该配置文件的程序:
files/externalxmltest.java:
这里是一个实现带有PatternLayout的FileAppender的日志记录器Logger的XML配置文件:
你可以从这里下载示例: xmllog4jconfig2.xml。 想要得到更多的使用XML文件配置log4j环境的例子,请查看log4j发行版的目录src/java/org/apache/log4j/xml/examples/ 。
这就是上面讨论的文本文件形式的配置文件:
# initialise root logger with level DEBUG and call it BLAH
log4j.rootLogger=DEBUG, BLAH
# add a ConsoleAppender to the logger BLAH
log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
# set set that layout to be SimpleLayout
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout
从这里可以下载: plainlog4jconfig.txt。这就是执行该配置文件的程序:
你可以下载使用该配置文件的示例: externalplaintest.java。想要获得更多的使用文本文件配置log4j环境的例子,请查看log4j发行版中的目录examples。
使用log4j大概涉及3个主要概念:
公共类 Logger Logger 负责处理日志记录的大部分操作。
公共接口 Appender Appender 负责控制日志记录操作的输出。
公共抽象类Layout Layout 负责格式化Appender的输出。
3.1.Logger
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):
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是最高等级的,用于关闭所有日志记录。 日志记录器(Logger)的行为是分等级的。如下表所示:
图.日志输出等级 Logger Output Hierarchy
日志记录器(Logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(Logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(Logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(Logger)的级别。如果在com.foo中没有创建日志记录器(Logger)的话,那么在com.foo.bar中创建的日志记录器(Logger)将继承root 日志记录器(Logger)的级别,root日志记录器(Logger)经常被实例化而可用,它的级别为DEBUG。
有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:
Logger logger = Logger.getRootLogger();
还可以这样创建一个新的日志记录器: Logger logger = Logger.getLogger("MyLogger");
比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:
static Logger logger = Logger.getLogger(test.class);
所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:
logger.setLevel((Level)Level.WARN);
可以使用7个级别中的任何一个; Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.
3.2.Appender
Appender 控制日志怎样输出。下面列出一些可用的Appender(log4j API中所描述的 http://jakarta.apache.org/log4j/docs/api/index.html):
1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。
2. DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。
3. FileAppender 把日志事件写入一个文件
4. RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。
5. WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。
6. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。
7. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
8. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。
9. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。
10. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。
还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。
3.2.1.使用ConsoleAppender
ConsoleAppender可以用这种方式创建:
ConsoleAppender appender = new ConsoleAppender(new PatternLayout());
创建了一个控制台appender,具有一个默认的PatternLayout。它使用了默认的System.out 输出。
3.2.2.使用FileAppender
FileAppender可以用这种方式创建:
FileAppender appender = null; try { appender = new FileAppender(new PatternLayout(),"filename"); } catch(Exception e) {}
上面用到的构造函数:
FileAppender(Layout layout, String filename)
实例化一个FileAppender并且打开变量"filename"指定的文件。
另一个有用的构造函数是:
FileAppender(Layout layout, String filename, boolean append)
实例化一个FileAppender并且打开变量"filename"指定的文件。
这个构造函数还可以选择是否对指定的文件进行追加的方式输出。如果没有指定值,那么默认的方式就是追加。
3.2.3.使用WriterAppender
WriterAppender可以用这种方式创建:
WriterAppender appender = null; try { appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename")); } catch(Exception e) {}
这个WriterAppender使用的构造函数带有PatternLayout和OutputStream参数,在这种情况下, FileOutputStream用于向一个文件输出。当然,它还具有其他可用的构造函数。
3.3.Layout
Appender必须使用一个与之相关联的 Layout,这样它才能知道怎样格式化它的输出。当前,log4j具有三种类型的Layout:
1. HTMLLayout 格式化日志输出为HTML表格。
2. PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。
3. SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。
3.4.基本示例
3.4.1.SimpleLayout和 FileAppender
这里是一个非常简单的例子,程序实现了SimpleLayout和FileAppender:
import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.apache.log4j.FileAppender; public class simpandfile { static Logger logger = Logger.getLogger(simpandfile.class); public static void main(String args[]) { SimpleLayout layout = new SimpleLayout(); FileAppender appender = null; try { appender = new FileAppender(layout,"output1.txt",false); } catch(Exception e) {} logger.addAppender(appender); logger.setLevel((Level) Level.DEBUG); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } }
你可以下载: simpandfile.java。 还可以查看它的输出: output1.txt.
3.4.2.HTMLLayout和 WriterAppender
这里是一个非常简单的例子,程序实现了 HTMLLayout和WriterAppender:
import java.io.*; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.HTMLLayout; import org.apache.log4j.WriterAppender; public class htmlandwrite { static Logger logger = Logger.getLogger(htmlandwrite.class); public static void main(String args[]) { HTMLLayout layout = new HTMLLayout(); WriterAppender appender = null; try { FileOutputStream output = new FileOutputStream("output2.html"); appender = new WriterAppender(layout,output); } catch(Exception e) {} logger.addAppender(appender); logger.setLevel((Level) Level.DEBUG); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } }
你可以下载: simpandfile.java. 还可以查看它的输出:output1.txt. 3.4.3.PatternLayout和 ConsoleAppender
这里是一个非常简单的例子,程序实现了PatternLayout和ConsoleAppender:
import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.ConsoleAppender; public class consandpatt { static Logger logger = Logger.getLogger(consandpatt.class); public static void main(String args[]) { // Note, %n is newline String pattern = "Milliseconds since program start: %r %n"; pattern += "Classname of caller: %C %n"; pattern += "Date in ISO8601 format: %d{ISO8601} %n"; pattern += "Location of log event: %l %n"; pattern += "Message: %m %n %n"; PatternLayout layout = new PatternLayout(pattern); ConsoleAppender appender = new ConsoleAppender(layout); logger.addAppender(appender); logger.setLevel((Level) Level.DEBUG); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } }
你可以下载:simpandfile.java. 还可以查看它的输出: output2.txt. 4.使用外部配置文件
Log4j经常与外部日志文件联合使用,这样很多可选项不必硬编码在软件中。使用外部配置文件的优点就是修改可选项不需要重新编译程序。唯一的缺点就是,由于用到io 指令,速度稍微有些减慢。
有两个方法可以用来指定外部配置文件:文本文件或者XML文件。既然现在所有事情都写成XML文件,那么该教程就重点讲解XML文件方法,但是也包含相关文本文件的例子。首先,看看下面的XML配置文件示例:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.SimpleLayout"/> </appender> <root> <priority value ="debug" /> <appender-ref ref="ConsoleAppender"/> </root> </log4j:configuration>
文件以标准的XML声明作为开始,后面跟着指出DTD(文档类型定义)的DOCTYPE声明,它定义了XML文件的结构,例如,什么元素可以嵌入在其他元素中等等。上面文件在log4j发行版的src/java/org/apache/log4j/xml目录中。 接着看看封装所有元素的 log4j:configuration 元素,它在DOCTYPE声明中被指定为根元素。嵌入在根元素中有两个结构: <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout"/>
</appender>
这里创建一个名叫"ConsoleAppender"的 Appender,注意,你可以选择任何名字,该示例之所以选择"ConsoleAppender",完全是为了示例的设计。接着这个appender类以全名形式给出,经常用规范(fully qualified)类名。 Appender必须具有一个指定的 name和class。嵌入在 Appender之内的是 layout元素,这里它被指定为SimpleLayout。 Layout 必须具有一个 class属性。
<root>
<priority value ="debug" />
<appender-ref ref="ConsoleAppender"/>
</root>
root元素必须存在且不能被子类化。示例中的优先级被设置为"debug",设置appender饱含一个appender-ref元素。还有更多的属性或元素可以指定。查看log4j发行版中的src/java/org/apache/log4j/xml/log4j.dtd以了解关于XML配置文件结构的更多信息。可以用下面这种方法把配置信息文件读入到Java程序中: DOMConfigurator.configure("configurationfile.xml");
DOMConfigurator 用一棵DOM树来初始化log4j环境。这里是示例中的XML配置文件:plainlog4jconfig.xml。这里是执行该配置文件的程序:
files/externalxmltest.java:
import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; public class externalxmltest { static Logger logger = Logger.getLogger(filetest.class); public static void main(String args[]) { DOMConfigurator.configure("xmllog4jconfig.xml"); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } }
这里是一个实现带有PatternLayout的FileAppender的日志记录器Logger的XML配置文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="appender" class="org.apache.log4j.FileAppender"> <param name="File" value="Indentify-Log.txt"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %p - %m%n"/> </layout> </appender> <root> <priority value ="debug"/> <appender-ref ref="appender"/> </root> </log4j:configuration>
你可以从这里下载示例: xmllog4jconfig2.xml。 想要得到更多的使用XML文件配置log4j环境的例子,请查看log4j发行版的目录src/java/org/apache/log4j/xml/examples/ 。
这就是上面讨论的文本文件形式的配置文件:
# initialise root logger with level DEBUG and call it BLAH
log4j.rootLogger=DEBUG, BLAH
# add a ConsoleAppender to the logger BLAH
log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
# set set that layout to be SimpleLayout
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout
从这里可以下载: plainlog4jconfig.txt。这就是执行该配置文件的程序:
import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class externalplaintest { static Logger logger = Logger.getLogger(externalplaintest.class); public static void main(String args[]) { PropertyConfigurator.configure("plainlog4jconfig.xml"); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } }
你可以下载使用该配置文件的示例: externalplaintest.java。想要获得更多的使用文本文件配置log4j环境的例子,请查看log4j发行版中的目录examples。
发表评论
-
jakarta common简介(转)
2007-12-15 01:19 1031打算写文章介绍其中几个我认为比较通用的东西: Codec 包 ... -
log4j 按时间、大小产生新的日志文件
2007-12-15 00:42 23057我们开发的B/S结构系统,在服务端一般要有日常运行的日志记录。 ... -
java的集合
2007-12-15 00:36 1107java 的集合类包含两部分,一部分是实现了接口Coll ... -
装 用JDring包设置特定时间日程提醒
2007-12-14 22:51 1622UNIX操作系统用cron守护进程来在特定的时间和日期运 ... -
swt中使用ole对象
2007-11-26 15:49 4079在一个视图中包含一个Active X控件需要两个对象的支 ... -
转 Log4j简介
2007-11-16 22:10 883第1章. Log4j 的优点 Log4j是Apach ... -
C/S socket笔记
2007-11-11 01:16 1329Java提供了一个URL(UniformResource ... -
Socket编程
2007-11-11 00:40 1320服务方: import java.io.*; i ... -
java API中的Proxy的使用
2007-11-06 00:51 2665Proxy 提供用于创建动态代理类和实例的静态方法,它还 ... -
转 基于swt,使用easymock测试驱动开发-gui
2007-11-05 20:10 1168作者:未知 来源:从互联网收集整理并转载 发布时间:200 ... -
转 RCP程序-窗口生成
2007-11-05 20:04 2440eclipse平台下,导入一个应用程序模板后,可以直接运行。这 ... -
Hibernate理论基础
2007-11-03 16:28 13181. 什么是hibernate? 2. hibe ... -
转 汉字问题
2007-11-03 15:17 1198如何实现汉字转化 ... -
转 myspring下的struts和hibernate配置
2007-11-03 11:43 935MyEclipse+struts+Hibernate配置开发2 ... -
转 struts下的验证
2007-11-03 11:03 1241在struts中用validator作服务器端验证 作者 ...
相关推荐
下面是一个简单的Log使用示例: 首先,在Android工程中创建一个新的Activity,例如`LogDemo`。在布局文件`main.xml`中添加一个Button,点击后触发日志输出。 ```xml android:orientation="vertical" android:...
在`message`类中,我们可以使用` spdlog::register_logger()`和`spdlog::cfg::load_yaml_config()`来读取并应用配置: ```cpp void Message::init_from_yaml(const std::string& config_path) { try { auto yaml_...
而g3log通过避免在记录日志时使用锁,极大地提高了并发性能,确保了日志的安全写入,这对于高并发的服务器应用尤其重要。 ### 2. 可插拔的日志处理器 g3log支持多种日志处理器,如文件、网络、控制台等。开发者...
本文将详细介绍如何使用MTK提供的PC端工具来抓取和解析ModemLog,以及它在调试过程中的作用。 1. **什么是ModemLog**: ModemLog是Modem内部生成的日志文件,它记录了Modem与网络之间的交互信息,包括信号强度、...
### Java Log4j 使用详解 #### 一、Java 日志管理概述 在Java应用程序中,良好的日志管理对于系统的维护和故障排查至关重要。本篇文章旨在详细介绍如何在Java中使用Log4j来管理日志,包括其配置方法以及与其他日志...
使用DDMS可以抓取logcat LOG、radio LOG、events LOG等。 抓取LOG是Qualcomm平台开发中不可或缺的一部分。不同的LOG类型都有其特点和作用,了解这些LOG类型可以帮助开发者快速定位问题,提高开发效率。
使用`log4z`的第一步是初始化。在程序启动时调用`log4z_init`函数,指定配置文件路径。配置文件可以设定日志级别、输出目的地、时间格式等参数。 ```cpp #include "log4z.h" int main() { log4z_init("log4z.conf...
"超好用的C# Log日志控件"是一个专门针对C#设计的日志管理工具,通过简单地引用DLL库,开发者可以方便地在项目中集成日志功能,而无需从头编写复杂的日志处理代码。 首先,日志控件的核心功能是提供记录、分类和...
封装了一个使用类,从本地读取配置log级别等信息,可输出多个种类的日志文件,输出示例如下 [2017-02-20 16:09:51.910](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数 [2017-02-20 16:09:51.911]...
Log4j是一款广泛使用的开源日志框架,由Apache软件基金会开发。本文将深入探讨Log4j的基本概念、配置与使用方法。 1. **什么是Log4j** Log4j是一个基于Java的日志记录工具,它提供了灵活的控制来记录日志信息,...
使用Log4net可以方便地监控和调试应用程序,有助于提升软件的可维护性和稳定性。 在Visual Studio 2008中使用Log4net,首先要引入log4net.dll的引用。这可以通过在项目中添加外部引用来完成,确保引用的是1.2.10.0...
在提供的压缩包文件中,"MFC使用log4cpp"和"MFC╩╣╙├log4cpp"可能包含更具体的示例代码或者项目的实现,读者可以通过查看这些文件进一步了解如何在实际项目中整合和使用log4cpp。 总之,log4cpp为C++开发者提供...
标题"Log4j简单使用"表明我们即将探讨的是日志记录库Log4j的基础应用。Log4j是Apache软件基金会开发的一个开源项目,它为Java应用程序提供了一个灵活的日志系统,允许开发者自定义日志级别、输出格式以及存储位置等...
本实例将详细介绍如何在WinForm应用中配置和使用Log4Net。 首先,我们要理解Log4Net的基本概念。Log4Net提供了一个可扩展的框架,通过定义不同的Appenders(输出目标),Layouts(输出格式)以及Filters(过滤规则...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
USBLog是一款实用工具,专门用于监控并记录计算机上USB设备(如U盘)的使用情况。这个工具的主要功能是帮助用户了解系统中USB设备的插入、拔出时间以及相关的活动,这对于数据安全管理和追踪USB设备的使用历史非常...
log4net是一款广泛使用的日志框架,它提供了灵活的日志记录配置和多种输出方式。下面我们将详细探讨如何在C# Winform环境下成功集成并使用log4net。 首先,`App.config`文件是.NET应用程序的配置文件,用于存放log4...
### 使用Log4j详解 #### 一、Log4j简介 Log4j是Apache组织提供的一款开源日志组件,它允许开发者以一种简单的方式记录应用程序的日志信息。Log4j的强大之处在于其高度灵活的配置方式,能够适用于不同的日志记录...
使用位运算计算LOG2 LOG2是数学中一个常用的函数,用于计算一个数字的对数。然而,在计算机科学中,我们更关心的是如何使用位运算来计算LOG2。位运算是一种快速且高效的运算方法,可以用于加速很多复杂的操作。下面...
本篇文章将详细讲解如何在VC2010 MFC Unicode环境下简单使用Boost.Log。 Boost.Log提供了一个灵活、高效且功能丰富的日志系统,适用于各种规模和复杂度的项目。在Windows环境下,如VC2010 MFC Unicode,我们可以...