java操作日誌
① java開發怎麼做日誌功能 就是記錄用戶每一步的操作具體做什麼了
細說起來,還算是比較麻煩的。大概給你個思路:
要記錄操作日誌,還能查看,那肯定得需要把操作記錄保存起來——直接保存到資料庫即可。
日誌管理模塊的話,因為有上邊的日誌記錄了,做個刪查的功能應該好做。這塊就不細說了。
最主要的地方:怎樣記錄日誌。思路如下:
先分析好需要記錄哪些日誌,這個一般都記錄新增、修改、刪除數據的操作。另外有些特殊的查詢操作也要記錄。
其實是如何記錄。一開始提到了日誌入庫。現在有個問題是什麼時候來做個邏輯。這個時機一般也是訪問者發起操作時就開始做。比如說在action或者servlet或者controller的對應的方法體里開始記錄。當然這需要寫好日誌入庫的邏輯。
其實這個日誌管理也是個比較完整的功能塊,甚至可以是個小系統。也有許多小細節和解決方案。思路有了,如何實現就根據情況而定吧。
② java中如何使用log4j將記錄的操作日誌信息
主要是通過配置文件
1.1 Log4j 支持兩種配置文件格式,一種是 XML 格式的文件,一種是 Java 特性文件 lg4j.properties (鍵 = 值)。
Logger 負責處理日誌記錄的大部分操作。
其語法為:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
2.1 level 是日誌記錄的優先順序,分為 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL
或者自定義的級別。2.2Log4j 建議只使用四個級別,優先順序從高到低分別是 ERROR 、 WARN 、 INFO 、 DEBUG
。2.3通過在這里定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這里定義了
INFO 級別,只有等於及高於這個級別的才進行處理,則應用程序中所有 DEBUG 級別的日誌信息將不被列印出來。2.4 ALL: 列印所有的日誌,
OFF :關閉所有的日誌輸出。 appenderName 就是指定日誌信息輸出到哪個地方。可同時指定多個輸出目的地。配置日誌信息輸出目的地 Appender 負責控制日誌記錄操作的輸出。
3.1log4j.appender.appenderName = fully.qualified.name.of.appender.class
3.2log4j.appender.appenderName.option1 = value1
3.3log4j.appender.appenderName.optionN = valueNLog4j 提供的 appender
4.1org.apache.log4j.ConsoleAppender (控制台),
4.2org.apache.log4j.FileAppender (文件),
4.3org.apache.log4j.DailyRollingFileAppender (每天產生一個日誌文件),
4.4org.apache.log4j.RollingFileAppender
(文件大小到達指定尺寸的時候產生一個新的文件),可通過 log4j.appender.R.MaxFileSize=100KB
設置文件大小,還可通過 4.5log4j.appender.R.MaxBackupIndex=1 設置為保存一個備份文件。
4.6org.apache.log4j.WriterAppender (將日誌信息以流格式發送到任意指定的地方)5.Layout
5.1org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
5.2org.apache.log4j.PatternLayout (可以靈活地指定布局模式),
5.3org.apache.log4j.SimpleLayout (包含日誌信息的級別和信息字元串),
5.4org.apache.log4j.TTCCLayout (包含日誌產生的時間、線程、類別等等信息) 6.格式化日誌信息
Log4J 採用類似 C 語言中的 printf 函數的列印格式格式化日誌信息,列印參數如下:
6.1%m 輸出代碼中指定的消息
6.2%p 輸出優先順序,即 DEBUG , INFO , WARN , ERROR , FATAL
6.3%r 輸出自應用啟動到輸出該 log 信息耗費的毫秒數
6.4%c 輸出所屬的類目,通常就是所在類的全名
6.5%t 輸出產生該日誌事件的線程名
6.6%n 輸出一個回車換行符, Windows 平台為 「rn」 , Unix 平台為 「n」
6.7%d 輸出日誌時間點的日期或時間,默認格式為 ISO8601 ,也可以在其後指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,輸出類似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
6.8%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。 7. log4j.propertie 示例文件:
log4j.rootCategory=INFO, stdout,file
7.1 定義名為 stdout 的輸出端的類型
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
7.2定義名為 file 的輸出端的類型為每天產生一個日誌文件。
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
7.3指定 com.neusoft 包下的所有類的等級為 DEBUG 。可以把 com.neusoft 改為自己項目所用的包名。
log4j.logger.com.neusoft=DEBUG
7.4如果項目中沒有配置 EHCache ,則配置以下兩句為 ERROR 。
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
8struts 配置
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
8.1 displaytag 配置
log4j.logger.org.displaytag=ERROR
8.2 spring 配置
log4j.logger.org.springframework=DEBUG
8.3 ibatis 配置
log4j.logger.com.ibatis.db=WARN
8.4 hibernate 配置
log4j.logger.org.hibernate=DEBUG log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
③ java如何做系統操作日誌
手頭沒有代碼,用文字書寫比較麻煩,說說思路吧:
1):操作日誌與每一個人的系統許可權密切相關,在前期定義許可權的時候,必須區分好每一個用戶級別的許可權(一級菜單與菜單下具體功能),需要用多張表進行許可權標識,並且建立各個表之間的關聯關系(具體設置此處略)。
2):當用戶點擊系統內每一個功能(每一個功能按鈕)的時候,一方面實現按鈕功能(新建按鈕實現新建功能),另外一方面將此處的功能名稱、模塊名稱、用戶名、時間等信息一並存儲到用戶操作表裡面。
3):在用戶操作查詢頁面輸入相應的條件,在用戶操作表內查詢即可。
④ 求助,java中怎麼編寫操作日誌,並將每一步操作輸入到資料庫中
這是把日誌列印到文件,操作到資料庫里還需要你自己具體弄
1.將log4j-1.2.14.jar加入你的項目中;
2.在src/下創建log4j.properties|log4j.xml文件;
3.在web.xml中配置log4j的信息,如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
4.在項目webroot下創建你想要保存日誌文件的文件夾及文件,如webroot/logs/web_app.log;
具體log4j.properties文件,給你一個示例吧,如下:
log4j.rootLogger=INFO, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.stdout.layout.ConversionPattern=- %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${webapp.root}/logs/webapp.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.com.opensymphony.xwork2=ERROR
# Control logging for other open source packages
log4j.logger.org.springframework=ERROR
log4j.logger.org.quartz=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=ERROR
# Struts OgnlUtil issues unimportant warnings
log4j.logger.com.opensymphony.xwork2.util.OgnlUtil=error
log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=error
具體寫法可根據自己的項目進行配置。