java日誌記錄,java用戶行為日誌記錄方法

本文目錄一覽:

java 日誌記錄要不要用中文

要。java日誌中的錯誤信息用英文描述不清楚的話需要使用中文描述即可,否則容易產生歧義,盡量先用英文來描述日誌錯誤信息。

java怎麼寫日誌記錄,最好是完整的代碼!謝啦!

常用2種方式,具體你可以去自己寫,建議,編程前期主要靠你自己琢磨,他人給你思路即可。

1.用簡單的讀寫文件實現,寫一個寫文件的共用類,每次把日誌寫到文件里即可。

2.用開源免費的日誌工具,如log4j。

祝你成功!!

在java中如何使用記錄日誌API

import java.util.logging.*;

public class BasicLoggingExample {

public static void main(String args[])

{

Logger logger = Logger.getLogger(“BasicLoggingExample”);

logger.log(Level.INFO, “Test of logging system”);

}

}

getLogger

public static Logger getLogger(String name)為指定子系統查找或創建一個 logger。如果已經創建了具有給定名稱的 logger,則返回該 logger。否則創建一個新的 logger。

如果創建了新的 logger,則根據 LogManager 的配置來其配置日誌級別,並將日誌輸出發送到其父處理程序。日誌配置註冊在 LogManager 全局命名空間內。

參數:

name – logger 的名稱。這應該是一個圓點分隔的名稱,並且通常應該基於子系統的包名或類名(如 java.net 或 javax.swing)。

log

public void log(Level level,String msg)記錄一條不帶參數的消息。

如果當前對於給定的消息級別而言 logger 是啟用的,那麼將給定的消息轉發到所有已註冊的輸出 Handler 對象。

參數:

level – 某個消息級別標識符,例如 SEVERE。

msg – 字元串消息(或消息類別中的鍵)。

java開發怎麼做日誌功能 就是記錄用戶每一步的操作具體做什麼了

Java開發做日誌功能是比較麻煩的,Java開發學做日誌功能推薦千鋒教育。千鋒教育合作院校超600所,校企合作共建實驗室50餘個,與教育部產學合作協同育人項目累計成功立項768項,為高校舉辦實訓近萬次,組織實施各類講座5萬餘場。規劃教材100本,已被近500所高校選用授課教材,深受廣大高校師生喜愛。

日誌對於一個系統來說非常重要,查找異常信息、分析系統運行情況等都需要用到日誌。所以無論是JDK還是第三方都提供了關於日誌的相關工具,本文分別介紹以下幾種工具,以及各種工具間的整合、原理。日誌,作為行為或狀態詳細描述的載體,其時效性與信息豐富程度在企業安全事件分析、事件回溯和取證過程中起到重要作用。在法律層,日誌也是重要的電子證據,先進的日誌記錄、監控和審計手段,可以幫助客戶有效地減少信息破壞、信息泄露的問題,對違法行為起到一定威懾作用。

想要了解更多java開發的相關信息,推薦諮詢千鋒教育。千鋒Java現已擁有成熟獨立的項目庫,項目均1:1引進大廠項目,授課採用 CREA 項目研發模型,即 Cooperation、Research、Exercise、Alliance,以項目促進高質量教學。多場景,多學科聯動為學員的技能實戰提供高度還原的真實演練場,充分賦能學員簡歷價值,打造企業直聘班,得到廣大學員一致認可。

java中使用日誌主要分為哪幾個步驟

首先,在項目中的classes 中新建立一個log4j.properties文件即可;

在實際編程時,要使Log4j真正在系統中運行事先還要對配置文件進行定義。定義步驟就是對Logger、Appender及Layout的分別使用。Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是java properties(key=value)【Java特性文件(鍵=值)】。(這裡只說明properties文件)

1、配置根Logger

其語法為:

log4j.rootLogger = [ level ] , appenderName1, appenderName2, …

level : 是日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先順序從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這裡定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這裡定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被列印出來。appenderName:就是指定日誌信息輸出到哪個地方。您可以同時指定多個輸出目的地。

例如:log4j.rootLogger=info,A1,B2,C3

2、配置日誌信息輸出目的地

其語法為:

log4j.appender.appenderName = fully.qualified.name.of.appender.class //

“fully.qualified.name.of.appender.class” 可以指定下面五個目的地中的一個:

1.org.apache.log4j.ConsoleAppender(控制台)

2.org.apache.log4j.FileAppender(文件)

3.org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件)

4.org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)

5.org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)

1.ConsoleAppender選項

Threshold=WARN:指定日誌消息的輸出最低層次。

ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。

Target=System.err:默認情況下是:System.out,指定輸出控制台

2.FileAppender 選項

Threshold=WARN:指定日誌消息的輸出最低層次。

ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。

File=mylog.txt:指定消息輸出到mylog.txt文件。

Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。

3.DailyRollingFileAppender 選項

Threshold=WARN:指定日誌消息的輸出最低層次。

ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。

File=mylog.txt:指定消息輸出到mylog.txt文件。

Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。

DatePattern=”.”yyyy-ww:每周滾動一次文件,即每周產生一個新的文件。當然也可以指定按月、周、天、時和分。即對應的格式如下:

1)”.”yyyy-MM: 每月

2)”.”yyyy-ww: 每周

3)”.”yyyy-MM-dd: 每天

4)”.”yyyy-MM-dd-a: 每天兩次

5)”.”yyyy-MM-dd-HH: 每小時

6)”.”yyyy-MM-dd-HH-mm: 每分鐘

4.RollingFileAppender 選項

Threshold=WARN:指定日誌消息的輸出最低層次。

ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。

File=mylog.txt:指定消息輸出到mylog.txt文件。

Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。

MaxFileSize=100KB: 後綴可以是KB, MB 或者是 GB. 在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1文件。

MaxBackupIndex=2:指定可以產生的滾動文件的最大數。

3、配置日誌信息的格式

其語法為:

1). log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

“fully.qualified.name.of.layout.class” 可以指定下面4個格式中的一個:

1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),

2.org.apache.log4j.PatternLayout(可以靈活地指定布局模式),

3.org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字元串),

4.org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)

1.HTMLLayout 選項

LocationInfo=true:默認值是false,輸出java文件名稱和行號

Title=my app file: 默認值是 Log4J Log Messages.

2.PatternLayout 選項

ConversionPattern=%m%n :指定怎樣格式化指定的消息。

3.XMLLayout 選項

LocationInfo=true:默認值是false,輸出java文件和行號

2). log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

這裡需要說明的就是日誌信息格式中幾個符號所代表的含義:

-X號: X信息輸出時左對齊;

%p: 輸出日誌信息優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921

%r: 輸出自應用啟動到輸出該log信息耗費的毫秒數

%c: 輸出日誌信息所屬的類目,通常就是所在類的全名

%t: 輸出產生該日誌事件的線程名

%l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

%x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。

%%: 輸出一個”%”字元

%F: 輸出日誌消息產生時所在的文件名稱

%L: 輸出代碼中的行號

%m: 輸出代碼中指定的消息,產生的日誌具體信息

%n: 輸出一個回車換行符,Windows平台為”

“,Unix平台為”

“輸出日誌信息換行

可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:

1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,默認的情況下右對齊。

2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,”-“號指定左對齊。

3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格。

4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊交遠銷出的字元截掉

比較詳細的例子

log4j.rootLogger=INFO,consoleAppender,logfile,MAIL

log4j.addivity.org.apache=true

#ConsoleAppender,控制台輸出

#FileAppender,文件日誌輸出

#SMTPAppender,發郵件輸出日誌

#SocketAppender,Socket日誌

#NTEventLogAppender,Window NT日誌

#SyslogAppender,

#JMSAppender,

#AsyncAppender,

#NullAppender

#文件輸出:RollingFileAppender

#log4j.rootLogger = INFO,logfile

log4j.appender.logfile = org.apache.log4j.RollingFileAppender

log4j.appender.logfile.Threshold = INFO

# 輸出以上的INFO信息

log4j.appender.logfile.File = INFO_log.html

#保存log文件路徑

log4j.appender.logfile.Append = true

# 默認為true,添加到末尾,false在每次啟動時進行覆蓋

log4j.appender.logfile.MaxFileSize = 1MB

# 一個log文件的大小,超過這個大小就又會生成1個日誌 # KB ,MB,GB

log4j.appender.logfile.MaxBackupIndex = 3

# 最多保存3個文件備份

log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout

# 輸出文件的格式

log4j.appender.logfile.layout.LocationInfo = true

#是否顯示類名和行數

log4j.appender.logfile.layout.Title =title:\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef

#html頁面的 title

############################## SampleLayout ####################################

# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout

############################## PatternLayout ###################################

# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout

# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] – % m % n % d

############################## XMLLayout #######################################

# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout

# log4j.appender.logfile.layout.LocationInfo = true #是否顯示類名和行數

############################## TTCCLayout ######################################

# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout

# log4j.appender.logfile.layout.DateFormat = ISO8601

#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.

# log4j.appender.logfile.layout.TimeZoneID = GMT – 8 : 00

# log4j.appender.logfile.layout.CategoryPrefixing = false ##默認為true 列印類別名

# log4j.appender.logfile.layout.ContextPrinting = false ##默認為true 列印上下文信息

# log4j.appender.logfile.layout.ThreadPrinting = false ##默認為true 列印線程名

# 列印信息如下:

#2007 – 09 – 13 14 : 45 : 39 , 765 [http – 8080 – 1 ] ERROR com.poxool.test.test – error成功關閉鏈接

###############################################################################

#每天文件的輸出:DailyRollingFileAppender

#log4j.rootLogger = INFO,errorlogfile

log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender

log4j.appender.errorlogfile.Threshold = ERROR

log4j.appender.errorlogfile.File = ../logs/ERROR_log

log4j.appender.errorlogfile.Append = true

#默認為true,添加到末尾,false在每次啟動時進行覆蓋

log4j.appender.errorlogfile.ImmediateFlush = true

#直接輸出,不進行緩存

# ‘ . ‘ yyyy – MM: 每個月更新一個log日誌

# ‘ . ‘ yyyy – ww: 每個星期更新一個log日誌

# ‘ . ‘ yyyy – MM – dd: 每天更新一個log日誌

# ‘ . ‘ yyyy – MM – dd – a: 每天的午夜和正午更新一個log日誌

# ‘ . ‘ yyyy – MM – dd – HH: 每小時更新一個log日誌

# ‘ . ‘ yyyy – MM – dd – HH – mm: 每分鐘更新一個log日誌

log4j.appender.errorlogfile.DatePattern = ‘ . ‘ yyyy – MM – dd ‘ .log ‘

#文件名稱的格式

log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout

log4j.appender.errorlogfile.layout.ConversionPattern =%d %p [ %c] – %m %n %d

#控制台輸出:

#log4j.rootLogger = INFO,consoleAppender

log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

log4j.appender.consoleAppender.Threshold = ERROR

log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout

log4j.appender.consoleAppender.layout.ConversionPattern =%d %-5p %m %n

log4j.appender.consoleAppender.ImmediateFlush = true

# 直接輸出,不進行緩存

log4j.appender.consoleAppender.Target = System.err

# 默認是System.out方式輸出

#發送郵件:SMTPAppender

#log4j.rootLogger = INFO,MAIL

log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender

log4j.appender.MAIL.Threshold = INFO

log4j.appender.MAIL.BufferSize = 10

log4j.appender.MAIL.From = yourmail@gmail.com

log4j.appender.MAIL.SMTPHost = smtp.gmail.com

log4j.appender.MAIL.Subject = Log4J Message

log4j.appender.MAIL.To = yourmail@gmail.com

log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout

log4j.appender.MAIL.layout.ConversionPattern =%d – %c -%-4r [%t] %-5p %c %x – %m %n

#資料庫:JDBCAppender

log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender

log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB

log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver

log4j.appender.DATABASE.user = ydbuser

log4j.appender.DATABASE.password = ydbuser

log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ‘ %d – %c %-5p %c %x – %m%n ‘ )

log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout

log4j.appender.DATABASE.layout.ConversionPattern =% d – % c -%- 4r [ % t] %- 5p % c % x – % m % n

#資料庫的鏈接會有問題,可以重寫org.apache.log4j.jdbc.JDBCAppender的getConnection() 使用資料庫鏈接池去得鏈接,可以避免insert一條就鏈接一次資料庫

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/180003.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-22 05:09
下一篇 2024-11-22 05:09

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • Cron執行日誌用法介紹

    本文將從多個方面對cron執行日誌進行詳細闡述,包括cron執行日誌的定義、cron執行日誌的產生原因、cron執行日誌的格式以及如何解讀cron執行日誌。 一、定義 Cron是一…

    編程 2025-04-29
  • 用法介紹Python集合update方法

    Python集合(set)update()方法是Python的一種集合操作方法,用於將多個集合合併為一個集合。本篇文章將從以下幾個方面進行詳細闡述: 一、參數的含義和用法 Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論