引言
在開發與生產環境中
一般有兩種方法
以上可以從我的《利用Spring來管理控制自己的應用程序》專題演講資料中獲取到更加詳細的信息
先說一下上面兩種方法的不同與缺點
雖然上述兩種方法存在著一些不足
現在
二
通過分析 Log
Log
public class Log
public void contextInitialized(ServletContextEvent event) {
Log
}
public void contextDestroyed(ServletContextEvent event) {
Log
}
}
進而可以得知
最後我們可以得到最直接有用的三個方法
根據給定的配置文件進行初始化日志配置
根據給定的配置文件和間隔時間
關閉日志
根據以上分析
三
private String CLASSPATH =
private String location = CLASSPATH +
private String locationRunning = location;
private long refreshInterval =
private long refreshSecond =
private long refreshMinute =
private long refreshHour =
private boolean refreshDaemon = false;
增加 refreshDaemon 開關
增加一系列的時間配置參數
refreshHour *
public interface ILog
{
public void init(); // 根據配置信息初始化日志
public void destroy(); // 銷毀日志
public void refreshIntervalThread(); // 定時加載日志的配置信息
public void refreshIntervalImmediately(); // 立即加載默認的日志配置信息
public void refreshIntervalImmediatelyByFilePath(String log
public void refreshIntervalImmediately(boolean isXmlConfig
public String getRunningConfing() throws Exception;//獲取正在運行的日志配置信息
}
由於將通過 Web Console 頁面進行管理控制
創建 l 文件
<html>
<head>
<meta http
<title>日志動態配置管理控制台</title>
<link rel=
</head>
<body>
<img src=
<form action=
<p>配置內容
<p><input checked type=
<ul>
<li>classpath:log
<li>file:C:/log
<li>C:/log
</ul>
<p><input type=
<p>配置方式
<select name=
<option value=
<option value=
</select>(請根據實際的配置內容選擇相應的類型)</p>
<textarea name=
# default
default
</textarea>
<input type=
<input type=
</form>
<br>
<a title=
<a title=
<a title=
<a title=
</body>
</html>
在此示例中直接采用簡單易用的 Spring MVC 進行控制
直接 implements Controller 來創建三個 Controller
Log
Log
Log
用來測試日志配置信息是否成功加載
public class HelloServlet extends HttpServlet
{
private static final long serialVersionUID =
private static final Logger logger = Logger
public void doGet(HttpServletRequest request
{
try
{
ServletOutputStream out = response
out
out
out
out
out
out
out
out
if(logger
{
logger
out
}
if(logger
{
(
out
}
logger
logger
logger
out
out
out
out
}
catch(IOException e)
{
e
}
}
}
一個成功的頁面 RefreshSuccess
<%@page contentType=
<html xmlns=
<head>
<meta http
<title>動態配置操作成功</title>
<link rel=
</head>
<body>
<img src=
<p>
恭喜
<p>
當前的配置為
<textarea rows=
<p>
<a JavaScript:history
</body>
</html>
以及一個失敗的頁面 RefreshFailed
beanRefLog
<?xml version=
<!DOCTYPE beans PUBLIC
<beans>
<bean id=
<property name=
<list>
<value>classpath:LoggerConsole
</list>
</property>
</bean>
<bean id=
<property name=
<property name=
<property name=
<property name=
</beans>
beanRefMVC
<?xml version=
<!DOCTYPE beans PUBLIC
<beans>
<bean id=
<property name=
<props>
<prop key=
<prop key=
<prop key=
</props>
</property>
</bean>
<bean id=
<property name=
<value>/WEB
</property>
<property name=
<value>
</property>
</bean>
<bean id=
<property name=
<property name=
<property name=
</bean>
<bean id=
<property name=
<property name=
<property name=
</bean>
<bean id=
<property name=
<property name=
<property name=
</bean>
</beans>
<?xml version=
<!DOCTYPE beans PUBLIC
<beans>
<import resource=
<import resource=
</beans>
在 web
<!DOCTYPE web
<web
<display
<description>Spring Log
<context
<param
<param
</context
<listener>
<listener
</listener>
<servlet>
<servlet
<servlet
<load
</servlet>
<servlet>
<servlet
<display
<servlet
</servlet>
<servlet
<servlet
<url
</servlet
<servlet
<servlet
<url
</servlet
</web
這樣
四
可以立即加載默認的日志配置
文件
可以立即停止日志
可通過此測試用的 Servlet 來查看日志是否成功
先提交 INFO 等級的配置
然後查看測試的結果信息
只顯示 INFO 級別的信息
更改為 DEBUG級別
然後查看測試的結果信息
顯示出 DEBUG 級別的信息出來了
五
一個簡單的封裝與擴展
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28220.html