Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关键云计算中的时区变化_Java_Timezone_Log4j_Cloud Foundry - Fatal编程技术网

Java 关键云计算中的时区变化

Java 关键云计算中的时区变化,java,timezone,log4j,cloud-foundry,Java,Timezone,Log4j,Cloud Foundry,我在PCF(Pivotal cloud foundry)中的spring boot应用程序以UTC+5:30显示“new Date()”的日志和输出,我想将此时区更改为UTC-5:00(即CDT)。我看到了这样一个帖子: 但在做了类似的更改之后,它似乎对我的日志时间戳没有任何影响。但是,我确实得到了记录的“new Date()”输出,因为它是不同的 2018-09-04T18:40:06.025+05:30 [APP/PROC/WEB/0] [OUT] ########## HIT. Tue

我在PCF(Pivotal cloud foundry)中的spring boot应用程序以UTC+5:30显示“new Date()”的日志和输出,我想将此时区更改为UTC-5:00(即CDT)。我看到了这样一个帖子:

但在做了类似的更改之后,它似乎对我的日志时间戳没有任何影响。但是,我确实得到了记录的“new Date()”输出,因为它是不同的

2018-09-04T18:40:06.025+05:30 [APP/PROC/WEB/0] [OUT] ########## HIT. Tue Sep 04 13:10:06 GMT 2018
但这也是错误的,新日期()应该打印“2018年9月4日星期二08:10:06 GMT”

我的manifest.yml包含以下内容

---
  path: target/VFS-ConfigClient-0.0.1-SNAPSHOT.jar
  memory: 1G
  disk_quota: 1G
  instances: 1
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  applications:
  - name: VFS-ConfigClient
    env: 
      SPRING_PROFILES_ACTIVE: nonProd_test
      TZ: CDT
# Logging Mechanism
log4j.rootLogger = DEBUG, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.logger.com.centurylink = INFO, DEBUG, ERROR
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
我的log4j.properties包含以下内容

---
  path: target/VFS-ConfigClient-0.0.1-SNAPSHOT.jar
  memory: 1G
  disk_quota: 1G
  instances: 1
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  applications:
  - name: VFS-ConfigClient
    env: 
      SPRING_PROFILES_ACTIVE: nonProd_test
      TZ: CDT
# Logging Mechanism
log4j.rootLogger = DEBUG, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.logger.com.centurylink = INFO, DEBUG, ERROR
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

如果有人能给我指出正确的方向,我将不胜感激。

您必须在log4j设置中保持格式。这有很好的细节

您必须在log4j设置中维护格式。这有很好的细节

最终认为这是对cloud foundry中记录正确时间戳的明显更改。下面是解决该问题的更改(最后一行中的JAVA_选择了env变量)。谢谢大家帮助我

---
  path: target/VFS-ConfigClient-0.0.1-SNAPSHOT.jar
  memory: 1G
  disk_quota: 1G
  instances: 1
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  applications:
  - name: VFS-ConfigClient
    env: 
      SPRING_PROFILES_ACTIVE: nonProd
      JAVA_OPTS: -Duser.timezone=America/Chicago

最后,我发现在CloudFoundry中记录正确的时间戳是一个明显的改变。下面是解决该问题的更改(最后一行中的JAVA_选择了env变量)。谢谢大家帮助我

---
  path: target/VFS-ConfigClient-0.0.1-SNAPSHOT.jar
  memory: 1G
  disk_quota: 1G
  instances: 1
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  applications:
  - name: VFS-ConfigClient
    env: 
      SPRING_PROFILES_ACTIVE: nonProd
      JAVA_OPTS: -Duser.timezone=America/Chicago

我已经在我的log4j.properties中添加了下面两行代码,并且还导入了lg4j附加程序,但是这对日志时间戳没有影响。:/log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601}{America/Chicago}%p[%c]%m%n所以我引用的论坛上面的作品。我不确定您在这里到底犯了什么错误我已经在我的log4j.properties中添加了下面两行,并且还导入了lg4j附加程序,但这对记录器时间戳没有影响。:/log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601}{America/Chicago}%p[%c]-%m%n所以我在论坛上引用了上述作品。我不确定你在这里到底犯了什么错误。你当然不想看到
08:10:06 GMT
,那就大错特错了。我想你想要的是
08:10:06 CDT
。而不是
new Date()
使用
OffsetDateTime.now(ZoneOffset.of Hours(-5)
或者更确切地说是
ZonedDateTime.now(ZoneId.of(“America/Chicago”)
。嗨,是的,这将更改应用程序的时间戳。另一种方式>>[TimeZone.setDefault(TimeZone.getTimeZone(“America/Chicago”)];我不想在java层中添加此选项,因此找到了一个替代解决方案来在清单文件中应用类似的修复。感谢此替代解决方案。
TimeZone
是过时的类。如果您有选择的话,我更喜欢
ZoneId
。无论如何,感谢您的回复。您肯定不希望
08:10:06 GMT
,那是那就错了。我想你想要的是
08:10:06 CDT
。而不是
new Date()
使用
OffsetDateTime.now(ZoneOffset.of Hours(-5)
或者更确切地说是
ZonedDateTime.now(ZoneId.of(“America/Chicago”)
。嗨,是的,这将更改应用程序时间戳。另一种方式>>[TimeZone.setDefault(TimeZone.getTimeZone.getTimeZone(“美国/芝加哥”)];我不想在java层中添加此选项,因此找到了一个替代解决方案来在清单文件中应用类似的修复。感谢此替代解决方案。
TimeZone
是过时的类。如果您有选择,我更喜欢
ZoneId
。无论如何,感谢您的反馈。这将在JVM启动时设置其时区。请注意,稍后可能会被您的程序的某个部分或运行在同一JVM中的其他程序更改。这将在JVM启动时设置JVM的时区。请注意,稍后可能会被您的程序的某个部分或运行在同一JVM中的其他程序更改。