1

我已经在生产中启用了 Jetty Access Logs,直到今天一切都很好。今天,访问日志似乎不再获取数据,即使服务本身运行正常。我怀疑我对“retainDays”属性有些不理解。这是设置日志记录的 etc/jetty.xml 的摘录...

<!-- Built-in Jetty AccessLog log -->
<Ref id="AccessLog">
  <Set name="requestLog">
    <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
      <Arg><SystemProperty name="jetty.logs" default="/data/logs"/>/dm-app1_access.log</Arg>
      <Set name="retainDays">7</Set>
      <Set name="append">true</Set>
      <Set name="extended">false</Set>
      <Set name="logLatency">true</Set>
      <Set name="LogTimeZone">GMT</Set>
    </New>
  </Set>
</Ref>

为什么当这个孩子达到retainDays 值时,日志似乎停止了?我希望它只是截断并继续记录到/data/logs/dm-app1_access.log。

4

1 回答 1

1

日志记录停止,因为我的文件名不包含“yyyy_mm_dd”占位符。发现配置可以使用类似于我们的 logback RollingFileAppenders 的日志文件命名格式完成工作,就像......

<!-- Built-in Jetty AccessLog log -->
<Ref id="AccessLog">
  <Set name="requestLog">
    <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
      <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/access.yyyy_mm_dd.log</Set>
      <Set name="filenameDateFormat">yyyyMMdd</Set>
      <Set name="retainDays">3</Set>
      <Set name="append">true</Set>
      <Set name="extended">false</Set>
      <Set name="logLatency">true</Set>
      <Set name="LogTimeZone">GMT</Set>
    </New>
  </Set>
</Ref>

...这将获取创建的访问日志文件,如 logs/access.20120718.log。当我发现“filename”属性中的“yyyy_mm_dd”只是“filenameDateFormat”属性中包含的实际 SimpleDateFormat 的占位符时,重要的学习时刻到来了。

于 2012-07-19T00:02:10.040 回答