導航:首頁 > 編程語言 > java讀取日誌

java讀取日誌

發布時間:2023-04-14 04:27:47

java 如何獲取控制台日誌輸出的信息

很簡單的,如果你查api文檔會發現類System有個「欄位摘要」,很容易發現有個out,
它返局虧回static PrintStream,還會發現System有個方法是static void setOut(PrintStream out)
重新分配「標准」輸出流。 再點擊PrintStream,很明顯它是OutputStream
的子類 解決如下
輸出流重定向

import java.io.*;

public class IO2File {
public static void main(String[] args) throws IOException {

File f=new File("out.txt");
f.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(f);
PrintStream printStream = new PrintStream(fileOutputStream);
System.setOut(printStream);
System.out.println("默認輸出到控制台的這一句,輸出到了並臘滲文件 out.txt"絕脊);
}
}

Ⅱ 求助 在java中怎麼一次讀取多個日誌文件 ,文件名是以時間命名的。求思路和詳細的代碼

這個很簡單阿 你讀取一個文件夾
遍歷這個文件家裡面的文件(日誌文件)就行了

Ⅲ 【java 資料庫】如何取出資料庫的記錄日誌

糾正一個問題 退出系統不是退出資料庫
說一下 你這個是 java代碼方面的問版題 和數據權庫無關 你這樣提問 很容易讓我聯想到 如果提取資料庫的log內容
接下來說一下怎麼實現
建立程序操作記錄數據表 表中內容可以包括 用戶 操作內容 執行時間 等
然後就是 找到你所有認為應該添加 日誌的位置 然後添加一段 向操作記錄表寫入記錄的代碼
如果怕 程序卡 添加日誌可以用一個新的線程來做

Ⅳ java定時讀取日誌文件

public static void dateDemo()
{
Date time = new Date(System.currentTimeMillis());
SimpleDateFormat sf = new SimpleDateFormat("HH-mm-ss");
String s = sf.format(time);
sop(s);
sop(time.toString());
}
public static void sop(Object obj) {
System.out.println(obj);
}
用這個方法,你就回可以取到時間的字答符串。
定時任務,你就可以比較下時間的字元串。

Ⅳ java指定日誌配置路徑命令

單獨的Java程序包, 需要通過命令java -jar或java -cp的方式啟動;

我們可以在啟動命令中加入系統運行時變數, 在log4j載入配置文件之前通過System.getProperties(「path」)讀取此變數, 即可實現靈活載入當前路徑.

(1) 啟動腳本設置:

假設當前項目的目錄結構為:

/Projects/KafkaConsumer
丨 bin 項目的啟動腳本
丨 conf 項目的配置文件
丨 lib 項目的其他依賴包
丨 bogs 項目的日誌輸出路徑

啟動腳本位於bin目錄下, 內容示例如下:

# 獲取當前腳本所處的目錄, 然後進入其上級目錄, 最後pwd輸出該目錄, 最終的結果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`; cd ..; pwd)# 獲取Java運行程序的位置, 並指定主類java_bin=$(which java)main_class=」org.shoufeng.elastic.ConsumerMain」# 通過-cp、擴展CLASSPATH、指定主類的方式啟動項目, # 並通過「姿冊-D」的方式向此程序的運行時並桐環境中設置當前項目的路徑,# 即可在程序中通過System.getProperty(「base.dir」)獲取此路徑 nohup ${java_bin} -Dbase.dir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/* ${main_class} >> /dev/null &

(2) Java程序讀取變數:

實log4j的FileAppender本身支持動態設置文件路徑, 如:

log4j.appender.logfile.File=${base.log}/logs/app.log

其中「${base.log}」是絕冊坦一個變數, 會被System Property中的base.log的值代替, 代碼中的使用方式為:

public static void main(String[] args) { // 獲取系統運行時變數中的日誌文件的輸出路徑 // 此變數需要在啟動命令中通過-D的方式設置 String baseDir = System.getProperty(「b

Ⅵ java怎麼讀取windows 事件日誌 文件

||您好,很高興為您解答。日誌文件在哪個目錄,用fileinputstream讀文件就行了

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class FileReaderTest {

static List<String> logs = new ArrayList<String>();

public static List<String> readFile(File f) throws IOException {
if (f == null || !f.exists()) {
return null;
}
List<String> list = new ArrayList<String>();
String encoding = "UTF-8";
InputStreamReader read = new InputStreamReader(new FileInputStream(f),
encoding);
BufferedReader br = new BufferedReader(read);
String line = null;

Ⅶ 為什麼java導入日誌包後就能用

關於日誌,在大家的印象中都是比較簡單的,只須引入了相關依賴包,剩下的事情就是在項目中「盡情」的列印我們需要的信息了。但是往往越簡單的東西越容易讓我們忽視,從而導致一些不該有的bug發生,作為一名嚴謹的程序員,怎麼能讓這種事情發生呢?所以下面我們就來了解一下關於日誌的那些正確使用姿勢。

正文

日誌規范

命名

首先是日誌文件的命名,盡量要做到見名知意,團隊裡面也必須使用統一的命名規范,不然「臟亂差」的日誌文件會影響大家排查問題的效率。這里推薦以「projectName_logName_logType.log」來命名,這樣通過名字就可以清晰的知道該日誌文件是屬於哪個項目,什麼類型,有什麼作用。例如在我們MessageServer項目中監控Rabbitmq 消費者相關的日誌文件名氏明可以定義成「messageserver_rabbitmqconsumer_monitor.log」。

保存時間

關於日誌保存的時間,普通的日誌文件建議保留15天,若比較重要的可根據實際情況延長,具體請參考各自伺服器磁碟空間以及日誌文件大小作出最優選擇。

日誌級別

常見的日誌級別有以下:

DEBUG級別:記錄調試程序相關的信息。

INFO級別:記錄程序正常運行有意義的信息。

WARN級別:記錄可能會出現潛在錯誤的信息。

ERROR級別:記錄當前程序出錯的信息,需要被關注處理。

Fatal級別:表示出現了嚴重錯誤,程序將會中斷執行數核悉。

建議在項目中使用這四種級別, ERROR、WARN、INFO 、DEBUG。

正確姿勢

1、提前判斷日誌級別

//條件判斷if(logger.isDebugEnabled){ logger.debug("server info , id : " + id + ", user : " + user);}//使用佔位符logger.debug("server info , id : {}, user : {}",id,user);

對於DEBUG,INFO級別的日誌,在我們的程序中是比較高頻的存在,當我們的項目大了,日誌變多了,這時候為了程序運行的效率,我們必須以條件判斷或者佔位符的方式來列印日誌。為什麼呢?假如我們項目中配置的日誌級別為WARN,那麼對於我們下面的日誌輸出語句『 logger.debug("server info , id : " + id + ", user : " + user);』,雖然該日誌不會被列印,但是卻會執行字元串拼接的操作,這里我們的user是一個實例對象,所以還會執行toString方法,這樣就白白浪費了不少系統的資源。

2、避免多餘日誌輸出

在我們的生產環境中,一般禁止DEBUG日誌的輸出,其列印的頻率是非常高的,容易對正常運行的程序造成嚴重的影響,在我們最近的項目中就有遇到過類似的情況。

那麼這時候該學會使用additivity屬性

<logger name="xx" additivity="true">

在這邊配置成true的話,也就是默認的情況,這時候當前Logger會繼承父Logger的Appender,說白了就是當前日誌的輸出除了輸出在當前日誌文件以外,還會輸出至父文件里。所以一般情況下,我們為了避免重復列印,會將這個參數設置成false,以減少不必要的輸出。

3、保證日誌記錄信息完整

在我們的代碼中,日誌記錄的內容要包含異常的堆棧,請勿隨意輸出「XX出錯」等簡單的日誌,這對於錯誤的調試毫無幫助。所以我們在記錄異常的時候一定要帶上堆薯乎棧信息,例如

logger.error("rabbitmq consumer error,cause : "+e.getMessage(),e); 語言 方法

9347 eS694L2Q42

3RFHn語音主播

1391 2010-10-26 06:46:57

切記在輸出對象實例的時候,須確保對象重寫了toString方法,否則只會輸出其hashCode值。

4、定義logger變數為static

private static final Logger logger = LoggerFactory.getLogger(XX.class);

確保一個對象只使用一個Logger對象,避免每次都重新創建,否則可能會導致OOM。

5、正確使用日誌級別

try{ //..}catch(xx){ logger.info(..); }

這樣一來,本來是ERROR的信息,全都列印在INFO日誌文件里了,不知情的同事還會在死盯著錯誤日誌,而且還找不出問題,多影響工作效率是吧?

6、推薦使用slf4j+logback組合

logback庫里自身就已經實現了slf4j的介面,就無需引入多餘的適配器了,而且logback也具有更多的優點,建議新項目可以使用這個組合。還有一點需要注意,當引入slf4j後,要注意其實際使用的日誌庫是否是由我們引入的,也有可能會使用了我們第三方依賴包所帶入的日誌庫,這樣就可能會導致我們的日誌失效。

7、日誌的聚合分析

日誌的聚合可以把位於不同伺服器之間的日誌統一起來分析處理,如今ELK技術棧亦或者的EFG(fluentd+elasticsearch+grafana)等都是一些比較成熟的開源解決方案。

拿ELK來說,可以在我們的伺服器上直接通過logstash來讀取應用列印的日誌文件,或者也可以在我們項目中的日誌配置文件里配置好相關的socket信息,列印的時候直接把日誌信息輸出至logstash。再交由elasticsearch存儲,kibana展示。

Ⅷ 怎麼查看java虛擬機的日誌

使用「查日誌」來的方法源就可以了。在「開始」菜單的運行」中輸入「eventvwr.msc」,打開事件查看器,在左側窗口中選擇「系統」,從右側系統事件中查找事件ID為6005、6006的事件(事件ID號為6005的事件表示事件日誌服務已啟動,即開機,

Ⅸ 請教大神!!!!:怎麼使用java代碼獲取git提交日誌信息

String localRepoGitConfig = "D:/test/清嘩.git"; /拍賣/路徑答賀行
Git git = Git.open(new File(localRepoGitConfig));
git.log().call().forEach(i->System.out.println(i.getFullMessage()));

Ⅹ log4j的使用,即java該如何使用日誌文件

java使用日誌文件log4j的方法:

1、 新建一個Java工程,導入Log4j包,pom文件中對應的配置代碼如下:

<!-- log4j support -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2、resources目錄下創建log4j.properties文件

### 設置###
log4j.rootLogger = debug,stdout,D,E

### 輸出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級別以上的日誌到=/home/qi/logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /home/qi/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 輸出ERROR 級別以上的日誌到=/home/admin/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/home/admin/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

3、輸出日誌的例子如下

package com.java.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4JTest {
private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

public static void main(String[] args) {
// 記錄debug級別的信息
logger.debug("This is debug message.");
// 記錄info級別的信息
logger.info("This is info message.");
// 記錄error級別的信息
logger.error("This is error message.");
}
}

4、輸出結果
首先,控制台輸入如下圖所示:

閱讀全文

與java讀取日誌相關的資料

熱點內容
藏文軟體app怎麼可以下載 瀏覽:960
鍵盤文件名 瀏覽:538
電腦自帶驅動在那個文件夾 瀏覽:531
c窗體讀取文件夾 瀏覽:965
asp婚紗攝影網站 瀏覽:684
文件恢復的原理 瀏覽:828
移動硬碟清空怎麼恢復數據 瀏覽:433
文件保存電腦桌面英文 瀏覽:128
debian共享文件夾 瀏覽:633
平安易貸不用app怎麼審核 瀏覽:883
如何學習編程環境 瀏覽:335
榮耀6升級60 瀏覽:281
如何點擊移動數據開啟 瀏覽:95
javajdbcmysql增刪改查 瀏覽:844
新的熔點儀為什麼測不出來數據 瀏覽:364
淘寶滾動海報代碼 瀏覽:953
如何查看本機sdk版本 瀏覽:678
lua2進制文件 瀏覽:710
除了plc編程還有什麼技巧 瀏覽:320
電視無線網路已關閉如何開啟 瀏覽:430

友情鏈接