可视化编辑器,alt+1到9键,切换到工具区,tab键,选择按钮,esc键,返回编辑
单例模式是一种最简单且最常用的设计模式。单例模式通常应用在那些对于整个程序来说只有一个入口的资源操作场景,比如:日志应用、配置读写、数据库连接池、线程池、网站计数器等。这里以日志应用为例说明如何使用单例模式,具体代码如下:
#vi Log4J.java
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4J {
public static final int DEBUG = 1;
public static final int INFO = 2;
public static final int WARN = 3;
public static final int ERROR = 4;
private static Logger logger = Logger.getLogger(Log4J.class.getName());
private static Log4J log4j = null;
public static Log4J getInstance()
{
if (null == log4j)
{
log4j = new Log4J();
}
return log4j;
}
public boolean SetConf(String strLogConfPath)
{
PropertyConfigurator.configure(strLogConfPath);
return true;
}
public void WriteLog(int iLogLevel, String strLogContent)
{
switch (iLogLevel)
{
case DEBUG:
logger.debug(strLogContent);
break;
case INFO:
logger.info(strLogContent);
break;
case WARN:
logger.warn(strLogContent);
break;
case ERROR:
logger.error(strLogContent);
break;
default:
System.out.println("error log level for WriteLog error");
break;
}
}
}
简单使用如下:
#vi Test.java
public class Test{
public static void main(String[] args)
{
Log4J.getInstance().SetConf(args[0]);
Log4J.getInstance().WriteLog(Log4J.DEBUG, "Test Log4J success");
System.out.print("HelloWord");
}
}
日志配置如下:
#vi log4j.properties
------------------------------------------------------------------------------------------------------
# 定义 DEBUG 优先级, R 为日志输出目的的
log4j.rootLogger= DEBUG, R
# 设置日志输出类型 , 为文件类型
log4j.appender.R= org.apache.log4j.FileAppender
# 设置日志文件名 logRecord.log, 输出到 tomcat 服务器的 logs 目录下
log4j.appender.R.file= ../logs/logRecord.log
# 每次在文件尾写入新的日志信息
log4j.appender.R.Append= true
# 日志输出信息格式类型
log4j.appender.R.layout= org.apache.log4j.PatternLayout
# 日志输出信息格式为 日期、优先级、 [ 全类名 ] 、日志信息、换行
log4j.appender.R.layout.ConversionPattern= %d %p [%l] %m%n
编译执行:
#javac -cp WEB-INF/lib/commons-logging-1.1.3.jar:WEB-INF/lib/log4j-1.2.17.jar -d ./ Test.java Log4J.java
#java -cp .:WEB-INF/lib/commons-logging-1.1.3.jar:WEB-INF/lib/log4j-1.2.17.jar Test log4j.properties
日志文件输出如下:
2014-05-03 08:10:51,962 DEBUG [Log4J.WriteLog(Log4J.java:36)] Test Log4J success
2014-05-03 08:10:52,890 DEBUG [Log4J.WriteLog(Log4J.java:36)]Test Log4J success
2014-05-03 08:10:53,647 DEBUG [Log4J.WriteLog(Log4J.java:36)] Test Log4J success