如何创建两个日志文件

huangapple go评论80阅读模式
英文:

How to create two log files

问题

我有以下的log4j.properties文件:

  1. log.path=/var/log/MyApp
  2. log4j.rootLogger=INFO, file
  3. log4j.appender.file = org.apache.log4j.RollingFileAppender
  4. log4j.appender.file.File = MyApp.log
  5. log4j.appender.file.Append = true
  6. log4j.appender.file.MaxFileSize=10MB
  7. log4j.appender.file.MaxBackupIndex=1000
  8. log4j.appender.file.DatePattern = '.yyyy-MM-dd
  9. log4j.appender.file.layout = org.apache.log4j.PatternLayout
  10. log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %t/%c{1} [%p] %m%n

当我运行MyApp时,我获得MyApp.log文件。我想知道是否有可能在代码中为两个主类设置两个文件?类似这样:

  1. object MyApp1 {
  2. def main(args: Array[String]) = {
  3. log4j.setName("File" -> "MyApp1.log")
  4. println("HelloWorld")
  5. }
  6. }
  7. object MyApp2 {
  8. def main(args: Array[String]) = {
  9. log4j.setName("File" -> "MyApp2.log")
  10. println("HelloWorld")
  11. }
  12. }

然后,当我运行MyApp1时,它会创建MyApp1.log,当我运行MyApp2时,它会创建MyApp2.log。

英文:

I have the following log4j.properties files:

  1. log.path=/var/log/MyApp
  2. log4j.rootLogger=INFO, file
  3. log4j.appender.file = org.apache.log4j.RollingFileAppender
  4. log4j.appender.file.File = MyApp.log
  5. log4j.appender.file.Append = true
  6. log4j.appender.file.MaxFileSize=10MB
  7. log4j.appender.file.MaxBackupIndex=1000
  8. log4j.appender.file.DatePattern = '.'yyy-MM-dd
  9. log4j.appender.file.layout = org.apache.log4j.PatternLayout
  10. log4j.appender.file.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss} %t/%c{1} [%p] %m%n

When I run MyApp, I obtain MyApp.log file. I wonder if it is possible to set in the code two files for two main class? something like:

  1. object MyApp1 {
  2. def main(args: Array[String]) = {
  3. log4j.setName("File" -> "MyApp1.log")
  4. println("HelloWorld")
  5. }
  6. }
  7. object MyApp2 {
  8. def main(args: Array[String]) = {
  9. log4j.setName("File" -> "MyApp2.log")
  10. println("HelloWorld")
  11. }
  12. }

and then, when I will run Myapp1 it will create Myapp1.log and when I will run Myapp2 it will create Myapp2.log

答案1

得分: 2

文件名可以在log4j.properties文件中参数化,然后作为JVM参数传递,

  1. log4j.appender.file = org.apache.log4j.RollingFileAppender
  2. log4j.appender.file.File = ${ApplicationName}.log

可以通过JVM参数传递ApplicationName作为实际文件名,

  1. -DApplicationName=Myapp1

相同的log4j.properties文件可以被两个应用程序共享,并且您可以为每个应用程序在JVM参数中传递应用程序名称。

英文:

The file name can be parameterized in the log4j.properties file and passed as a JVM argument,

  1. log4j.appender.file = org.apache.log4j.RollingFileAppender
  2. log4j.appender.file.File = ${ApplicationName}.log

Can pass the ApplicationName as a JVM argument with actual file name,

  1. -DApplicationName=Myapp1

Same log4j.properties file can be shared by both applications and you can pass the application name in the JVM parameter for each application.

答案2

得分: 1

你可以像这样为单个类配置日志文件 -

  1. log4j.logger.com.logger.test.logger_test.MyApp1=DEBUG, appender1
  2. log4j.additivity.com.logger.test.logger_test.MyApp1=false
  3. log4j.appender.appender1=org.apache.log4j.DailyRollingFileAppender
  4. log4j.appender.appender1.File=logs/MyApp1.log
  5. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  6. log4j.logger.com.logger.test.logger_test.MyApp2=DEBUG, appender2
  7. log4j.additivity.com.logger.test.logger_test.MyApp2=false
  8. log4j.appender.appender2=org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.appender2.File=logs/MyApp2.log
  10. log4j.appender.appender2.layout=org.apache.log4j.PatternLayout

示例:

  1. public class Myapp1 {
  2. Logger logger = Logger.getLogger(Myapp1.class);
  3. public Myapp1() {
  4. logger.debug("在 Myapp1 中");
  5. }
  6. }
  7. public class Myapp2 {
  8. Logger logger = Logger.getLogger(Myapp2.class);
  9. public Myapp2() {
  10. logger.debug("在 Myapp2 中");
  11. }
  12. }
  13. public class App {
  14. public static void main(String[] args) {
  15. Myapp1 myapp1 = new Myapp1();
  16. Myapp2 myapp2 = new Myapp2();
  17. }
  18. }
英文:

You can configure the log files for individual class like this -

  1. log4j.logger.com.logger.test.logger_test.MyApp1=DEBUG, appender1
  2. log4j.additivity.com.logger.test.logger_test.MyApp1=false
  3. log4j.appender.appender1=org.apache.log4j.DailyRollingFileAppender
  4. log4j.appender.appender1.File=logs/MyApp1.log
  5. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  6. log4j.logger.com.logger.test.logger_test.MyApp2=DEBUG, appender2
  7. log4j.additivity.com.logger.test.logger_test.MyApp2=false
  8. log4j.appender.appender2=org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.appender2.File=logs/MyApp2.log
  10. log4j.appender.appender2.layout=org.apache.log4j.PatternLayout

Example :

  1. public class Myapp1 {
  2. Logger logger = Logger.getLogger(Myapp1.class);
  3. public Myapp1() {
  4. logger.debug("In Myapp1");
  5. }
  6. }
  7. public class Myapp2 {
  8. Logger logger = Logger.getLogger(Myapp2.class);
  9. public Myapp2() {
  10. logger.debug("In Myapp2");
  11. }
  12. }
  13. public class App {
  14. public static void main( String[] args ){
  15. Myapp1 myapp1 = new Myapp1();
  16. Myapp2 myapp2 = new Myapp2();
  17. }
  18. }

huangapple
  • 本文由 发表于 2020年9月14日 19:18:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/63883231.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定