diff --git a/src/server/config/schema.js b/src/server/config/schema.js index 42f6ffc41670f30..71ad3051ede0e28 100644 --- a/src/server/config/schema.js +++ b/src/server/config/schema.js @@ -135,7 +135,7 @@ export default async () => Joi.object({ then: Joi.default(!process.stdout.isTTY), otherwise: Joi.default(true) }), - useUTC: Joi.boolean().default(true), + timezone: Joi.string().allow(false).default('UTC') }).default(), ops: Joi.object({ diff --git a/src/server/config/transform_deprecations.js b/src/server/config/transform_deprecations.js index 44571cee6c58dbc..21092817f80cf9a 100644 --- a/src/server/config/transform_deprecations.js +++ b/src/server/config/transform_deprecations.js @@ -19,6 +19,7 @@ import _, { partial } from 'lodash'; import { createTransform, Deprecations } from '../../deprecation'; +import { unset, set } from '../utils'; const { rename, unused } = Deprecations; @@ -55,6 +56,15 @@ const rewriteBasePath = (settings, log) => { } }; +const loggingTimezone = (settings, log) => { + if (_.has(settings, 'logging.useUTC')) { + const timezone = settings.logging.useUTC ? 'UTC' : false; + set('logging.timezone', timezone); + unset(settings, 'logging.UTC'); + log(`Config key "logging.useUTC" is deprecated. It has been replaced with "logging.timezone"`); + } +}; + const deprecations = [ //server rename('server.ssl.cert', 'server.ssl.certificate'), @@ -68,6 +78,7 @@ const deprecations = [ serverSslEnabled, savedObjectsIndexCheckTimeout, rewriteBasePath, + loggingTimezone, ]; export const transformDeprecations = createTransform(deprecations); diff --git a/src/server/logging/configuration.js b/src/server/logging/configuration.js index beec30b54bccbfb..59019ad8731290d 100644 --- a/src/server/logging/configuration.js +++ b/src/server/logging/configuration.js @@ -61,7 +61,7 @@ export default function loggingConfiguration(config) { config: { json: config.get('logging.json'), dest: config.get('logging.dest'), - useUTC: config.get('logging.useUTC'), + timezone: config.get('logging.timezone'), // I'm adding the default here because if you add another filter // using the commandline it will remove authorization. I want users diff --git a/src/server/logging/log_format.js b/src/server/logging/log_format.js index 43ffca7fd39c62e..994b5af8b89f456 100644 --- a/src/server/logging/log_format.js +++ b/src/server/logging/log_format.js @@ -18,7 +18,7 @@ */ import Stream from 'stream'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { get, _ } from 'lodash'; import numeral from '@elastic/numeral'; import chalk from 'chalk'; @@ -66,10 +66,10 @@ export default class TransformObjStream extends Stream.Transform { } extractAndFormatTimestamp(data, format) { - const { useUTC } = this.config; + const { timezone } = this.config; const date = moment(data['@timestamp']); - if (useUTC) { - date.utc(); + if (timezone) { + date.tz(timezone); } return date.format(format); } diff --git a/src/server/logging/log_format_json.test.js b/src/server/logging/log_format_json.test.js index b9878e63f08983a..1632b2b401c8ae6 100644 --- a/src/server/logging/log_format_json.test.js +++ b/src/server/logging/log_format_json.test.js @@ -196,10 +196,10 @@ describe('KbnLoggerJsonFormat', () => { }); }); - describe('useUTC', () => { - it('logs in UTC when useUTC is true', async () => { + describe('timezone', () => { + it('logs in UTC', async () => { const format = new KbnLoggerJsonFormat({ - useUTC: true + timezone: 'UTC' }); const result = await createPromiseFromStreams([ @@ -211,10 +211,8 @@ describe('KbnLoggerJsonFormat', () => { expect(timestamp).toBe(moment.utc(time).format()); }); - it('logs in local timezone when useUTC is false', async () => { - const format = new KbnLoggerJsonFormat({ - useUTC: false - }); + it('logs in local timezone timezone is undefined', async () => { + const format = new KbnLoggerJsonFormat({}); const result = await createPromiseFromStreams([ createListStream([makeEvent('log')]), diff --git a/src/server/logging/log_format_string.test.js b/src/server/logging/log_format_string.test.js index ca572f8c03e6616..e20b5eb59b76c1c 100644 --- a/src/server/logging/log_format_string.test.js +++ b/src/server/logging/log_format_string.test.js @@ -37,9 +37,9 @@ const makeEvent = () => ({ }); describe('KbnLoggerStringFormat', () => { - it('logs in UTC when useUTC is true', async () => { + it('logs in UTC', async () => { const format = new KbnLoggerStringFormat({ - useUTC: true + timezone: 'UTC' }); const result = await createPromiseFromStreams([ @@ -51,10 +51,8 @@ describe('KbnLoggerStringFormat', () => { .toContain(moment.utc(time).format('HH:mm:ss.SSS')); }); - it('logs in local timezone when useUTC is false', async () => { - const format = new KbnLoggerStringFormat({ - useUTC: false - }); + it('logs in local timezone when timezone is undefined', async () => { + const format = new KbnLoggerStringFormat({}); const result = await createPromiseFromStreams([ createListStream([makeEvent()]),