вход в систему с неправильной отметкой времени - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь использовать фреймворк для ведения журнала в Springboot для регистрации моей информации.К сожалению, когда я записываю информацию, предупреждающую об ошибке, метка времени точно такая же, как время запуска сервера приложений.

My logback.xml configuration information is as follows:


<?xml version="1.0" encoding="UTF-8"?>
<configuration
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd"
        debug="false" scan="true" scanPeriod="30 second">
    <property name="PROJECT" value="AmazonRss" />
    <property name="ROOT" value="logs/${PROJECT}/" />
    <property name="FILESIZE" value="10MB" />
    <property name="MAXHISTORY" value="100" />
    <timestamp key="DATETIME" datePattern="yyyy/MM/dd HH:mm:ss" />
    <!-- Console printing -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="utf-8">
            <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
            </pattern>
        </encoder>
    </appender>

........

и мой журнал похожи на:

[INFO ] 2019-04-17 16:48:44 [main] o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8888"]
[INFO ] 2019-04-17 16:48:44 [main] o.a.catalina.core.StandardService - Starting service [Tomcat]
[INFO ] 2019-04-17 16:48:44 [main] o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.14]
[INFO ] 2019-04-17 16:48:44 [main] o.a.c.core.AprLifecycleListener - The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
[INFO ] 2019-04-17 16:48:44 [main] o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
[INFO ] 2019-04-17 16:48:44 [main] o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 6725 ms
[INFO ] 2019-04-17 16:48:44 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
[INFO ] 2019-04-17 16:48:44 [main] com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
[INFO ] 2019-04-17 16:48:44 [main] o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
[INFO ] 2019-04-17 16:48:44 [main] org.hibernate.Version - HHH000412: Hibernate Core {5.3.7.Final}
[INFO ] 2019-04-17 16:48:44 [main] org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
[INFO ] 2019-04-17 16:48:44 [main] o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
[INFO ] 2019-04-17 16:48:44 [main] org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
[INFO ] 2019-04-17 16:48:44 [main] o.s.o.j.LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default'
[INFO ] 2019-04-17 16:48:44 [main] com.denistek.rss.utils.SpringUtil - ---------------------------------------------------------------------
[INFO ] 2019-04-17 16:48:44 [main] com.denistek.rss.utils.SpringUtil - ========The ApplicationContext configuration is successful. In the normal class, you can get the applicationContext object by calling SpringUtils.getAppContext(). applicationContext=org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@c818063, started on Wed Apr 17 16:48:45 CST 2019========
[INFO ] 2019-04-17 16:48:44 [main] o.s.b.a.e.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path '/actuator'
[INFO ] 2019-04-17 16:48:44 [main] o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
[INFO ] 2019-04-17 16:48:44 [main] s.d.s.w.p.DocumentationPluginsBootstrapper - Context refreshed
[INFO ] 2019-04-17 16:48:44 [main] s.d.s.w.p.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
[INFO ] 2019-04-17 16:48:44 [main] s.d.s.w.s.ApiListingReferenceScanner - Scanning for api listing references
[INFO ] 2019-04-17 16:48:44 [main] o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8888"]
[INFO ] 2019-04-17 16:48:44 [main] o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8888 (http) with context path ''
[INFO ] 2019-04-17 16:48:44 [main] com.denistek.rss.RssApplication - Started RssApplication in 32.748 seconds (JVM running for 34.213)
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-1] o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-1] o.s.web.servlet.DispatcherServlet - Completed initialization in 22 ms
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-4] e.u.i.c.crawler.CrawlController - Deleted contents of: /tmp/frontier ( as you have configured resumable crawling to false )
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-4] e.u.i.c.crawler.CrawlController - Crawler 1 started
[INFO ] 2019-04-17 16:48:44 [http-nio-8888-exec-4] e.u.i.c.crawler.CrawlController - Crawler 2 started
[INFO ] 2019-04-17 16:4

Очевидно, я запускаю службу после того, как сервер запускается много времени, но информация журнала времени выполнения совпадает с меткой времени, когдаслужба запущена.

Я новичок в регистрации, я не знаю, как возникает эта проблема. Я был бы очень признателен, если бы вы могли дать некоторые предложения.

1 Ответ

1 голос
/ 17 апреля 2019

Тег <timestamp не предназначен для использования со свойствами. Он оценивается во время запуска и его значение заменяется результатом. Это означает, что вы получите эквивалент:

<pattern>[%-5level] %d{2019-04-17 16:48:44} [%thread] %logger{36} - %m%n

И, таким образом, фиксированная дата и время. Документация разъясняет это:

Элемент timestamp принимает два обязательных атрибута key и datePattern и необязательный атрибут timeReference. Атрибут key имя ключа, под которым будет доступна метка времени последующие элементы конфигурации в качестве переменной. datePattern атрибут обозначает шаблон даты, используемый для преобразования текущего времени (при котором файл конфигурации анализируется) в строку. Дата шаблон должен следовать соглашениям, определенным в SimpleDateFormat. Атрибут timeReference обозначает временную привязку для отметки времени. По умолчанию используется время интерпретации / анализа конфигурации. файл т.е. текущее время. Однако при определенных обстоятельствах это может быть полезно использовать контекстное время рождения в качестве эталона времени. это может быть достигнуто установкой атрибута timeReference "contextBirth".

Вместо этого используйте обычное свойство:

<property name="MAXHISTORY" value="100" />
<property name="DATETIME" value="yyyy/MM/dd HH:mm:ss" />
<!-- Console printing -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder charset="utf-8">
        <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
        </pattern>
    </encoder>
</appender>
...