❶ log4j日誌文件,要記錄成什麼格式的,什麼樣的比較常用
有幾個級別:
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指出每個嚴重的錯誤事件將會導致應用程序的退出。
另外,還有兩個可用的特別的日誌記錄級別:
static Level ALL
ALL Level是最低等級的,用於打開所有日誌記錄。
static Level OFF
OFF Level是最高等級的,用於關閉所有日誌記錄。
一般指定為:xxx.log
可以將service和數據操作的sql分開:
log4j.rootLogger=INFO,rootDailyRollingFile
log4j.logger.java.sql=DEBUG, SqlDailyRollingFile
##### rootDailyRollingFile#####
log4j.appender.rootDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rootDailyRollingFile.File=d:\\weblog\\testprj\\root.log
log4j.appender.rootDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.rootDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rootDailyRollingFile.layout.ConversionPattern=%-r %d [%t] %-5p %c.%M(%F:%L) %x - %m%n
❷ kafka低版本的怎麼用java查詢給定broker上所有的日誌目錄信息
1. 日誌存儲格式
最新版本的kafka日誌是以批為單位進行日誌存儲的,所謂的批指的是kafka會將多條日誌壓縮到同一個batch中,然後以batch為單位進行後續的諸如索引的創建和消息的查詢等工作。
對於每個批次而言,其默認大小為4KB,並且保存了整個批次的起始位移和時間戳等元數據信息,而對於每條消息而言,其位移和時間戳等元數據存儲的則是相對於整個批次的元數據的增量,通過這種方式,kafka能夠減少每條消息中數據佔用的磁碟空間。
這里我們首先展示一下每個批次的數據格式:
圖中K1的數據有V1、V3和V4,經過壓縮之後只有V4保留了下來,K2的數據則有V2、V6和V10,壓縮之後也只有V10保留了下來;同理可推斷其他的Key的數據。
另外需要注意的是,kafka開啟日誌壓縮使用的是log.cleanup.policy,其默認值為delete,也即我們正常使用的策略,如果將其設置為compaction,則開啟了日誌壓縮策略,但是需要注意的是,開啟了日誌壓縮策略並不代表kafka會清理歷史數據,只有將log.cleaner.enable設置為true才會定時清理歷史數據。
在kafka中,其本身也在使用日誌壓縮策略,主要體現在kafka消息的偏移量存儲。在舊版本中,kafka將每個consumer分組當前消費的偏移量信息保存在zookeeper中,但是由於zookeeper是一款分布式協調工具,其對於讀操作具有非常高的性能,但是對於寫操作性能比較低,而consumer的位移提交動作是非常頻繁的,這勢必會導致zookeeper成為kafka消息消費的瓶頸。
因而在最新版本中,kafka將分組消費的位移數據存儲在了一個特殊的topic中,即__consumer_offsets,由於每個分組group的位移信息都會提交到該topic,因而kafka默認為其設置了非常多的分區,也即50個分區。
另外,consumer在提交位移時,使用的key為groupId+topic+partition,而值則為當前提交的位移,也就是說,對於每一個分組所消費的topic的partition,其都只會保留最新的位移。如果consumer需要讀取位移,那麼只需要按照上述格式組裝key,然後在該topic中讀取最新的消息數據即可。