当前位置: 首页 > 面试题库 >

使Logback以“%date”格式在日期和时间之间包括“ T”,以严格遵守ISO 8601

子车凯泽
2023-03-14
问题内容

默认情况下,Logback编码器使用类似于ISO
8601
标准的日期格式。但是它在日期和时间部分之间的中间缺少“
T”。该标记使解析更加容易,并且是标准所必需的(除非私有方另行同意)。T

是否有一些技巧可以 使Logback包括在内T

这个…

2006-10-20T14:06:49,812

代替这个

2006-10-20 14:06:49,812

我想我可以在添加“ T”的同时重新创建整个格式,但是我想知道是否有一些更简单的方法。


问题答案:

Logback的JIRA页面上有关于此问题的错误报告。从那以后没有太大的发展24/Feb/10 3:57 PM。我刚刚投票以引起注意。你也应该

我将提供与ISO 8601匹配的日期格式。

插入“ T”

这应该可以解决问题:

<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n
</pattern>

""需要,使,工作的描述文档。

<pattern>元素属于您的Logback配置设置。这是一个示例logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!-- Strangely, Logback lacks a built-in formatter for ISO 8601. So, roll our own.  -->
            <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <logger name="com.example" level="TRACE"/>


    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

时区

为了更完全符合ISO 8601标准,并且为了获得更有用的日志记录,您应该包括一个时区。

编辑(Michael-O,2014-06-15):事实 并非 如此,时区是绝对可选的。

要包含时区,请向传递第二个参数(请参阅doc)%date。传递时区的专有名称。避免使用三个或四个字母的时区代码,例如“
EST”,因为它们既不是唯一的也不是标准化的。例如,通过Australia/Perth。通常,对于日志记录,我们需要UTC(GMT)时间,这意味着没有任何偏移。在这种情况下,请通过UTC

您可以在日志中将时区偏移量显示为日期和时间的小时数和分钟数。附加一个X以将时区偏移显示为日期时间值的一部分。

这个…

%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}

…产生…

2014-04-16T09:59:24,009Z

XXXJava中7和8的作品在早期版本的Java,您可以使用Z格式定义中产生的偏移数量缺乏一个冒号。



 类似资料:
  • DateFormat类提供各种格式来一起格式化日期和时间。 将使用DateFormat.getDateTimeInstance()方法。 请参阅下面的示例。 在下面的示例中,我们将展示如何使用不同的格式来设置日期和时间的格式。 IOTester.java import java.text.DateFormat; import java.util.Date; public class I18NTes

  • 及其等效的WinApi是流行且有用的宏。原则上,它们使用上的指针算法来恢复指向成员的给定指针所属聚合的指针。 极简主义的实现通常是: 然而,这个宏的使用模式的严格符合性是有争议的。例如: 据我了解,该程序不严格合规,因为: < li >表达式< code>s.b是< code>int类型的左值 < li > <代码> 我注意到问题不在于< code>container_of宏本身。而是构造< co

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 问题内容: 我在将日期正确插入数据库中时遇到问题。 我使用这种格式,并且正确回显,但是,当我插入 它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。 问题答案: 如果要存储当前时间,请使用MYSQL的函数。 如果需要使用PHP进行格式化,请尝试