簡體   English   中英

如何為 spring-boot 應用程序設置 logging.path?

[英]How to set logging.path for spring-boot apps?

spring-boot提供了幾個可以在application.propertiesapplication.properties logging.*設置,例如:

logging.level.=DEBUG
logging.file=myfile.log
logging.path=d:/logs/

問題:生成了myfile.log ,但在類路徑中! 為什么 spring 不考慮我的絕對路徑?

Spring Boot 文檔說明

默認情況下,Spring Boot 只會登錄到控制台,不會寫入日志文件。 如果您想在控制台輸出之外寫入日志文件,您需要設置 logging.file 或 logging.path 屬性(例如在您的 application.properties 中)。

然后描述logging.filelogging.path屬性是如何工作的。 你應該只設置一個。

如果設置了logging.file ,它將寫入該特定文件。 該文件指出

名稱可以是確切位置或相對於當前目錄。

因此,您可能正在寫入當前目錄,該目錄恰好與您的類路徑相同。

如果你設置了logging.path ,Spring Boot

spring.log寫入指定目錄。 名稱可以是確切位置或相對於當前目錄。

檢查您的當前目錄是否不是您的類路徑,如果您不希望它們混合,並相應地調整logging.filelogging.path

我不知道這是否仍然需要,但是您可以根據您的示例使用以下代碼設置絕對路徑

logging.path=D:\logs\logfile.txt

您可以像這樣更改文件名和路徑。 如果該文件夾不存在,則會創建它。 在 Windows 上,您必須使用 \\ 作為分隔符,而在 Linux 和 Mac 上,您需要使用 / 作為分隔符。

記住:您的屬性中不能同時包含 logging.file 和 logging.path。 它是 .file 或 .path ...在你的情況下是路徑。

在發布前測試了 2 分鍾

對於 Spring Boot v2.3.4 及更高版本,肯定是:它不是logging.file=.... ,它是 logging.file。 姓名=....

您也可以在app.properties上進行此配置。 這就是它在我的一個項目中的工作方式。

logging.path=../logs

logging.file=${logging.path}/fileName.log

因此,您可以同時擁有這兩個屬性,並且一個引用另一個。

對於 spring-boot 2.3.x 及以上版本:

logging:
  level:
    root: INFO
    my.app: INFO
  file:
    path: './logs/${spring.application.name}'
    name: ${logging.file.path}/my-app.log

logging.file.name :日志文件名(例如, myapp.log )。 名稱可以是確切位置或相對於當前目錄。

logging.file.path :日志文件的位置。 例如, /var/log

參考: Spring-Boot 核心屬性

我在application.properties設置了logging.file=C:/usr/local/tomcat/logs/hib.log並在類中設置如下

private static final Logger logger = LogManager.getLogger(ChargeMasterController.class);

logger.info("Total time taken for  is ---------------------------" + time  + " ms");

日志在 logging.file 提到的路徑中打印得很好。

現在我想在 2 個不同的文件中為 2 個不同的類(在同一個包中)打印我的日志,我如何在 application.properties 中設置 2 logging.file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM