Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ The following table serves as a quick reference for different logging configurat
| | |
| --- | --- |
| `logging.appenders[].<appender-name>` | Unique appender identifier. |
| `logging.appenders[].console:` | Appender to use for logging records to **stdout**. By default, uses the `[%date][%level][%logger] %message` **pattern*** layout. To use a ***json**, set the [layout type to `json`](docs-content://deploy-manage/monitor/logging-configuration/kibana-log-settings-examples.md#log-in-json-ecs-example). |
| `logging.appenders[].console:` | Appender to use for logging records to **stdout**. By default, uses the `[%date][%level][%logger] %message %error` **pattern*** layout. To use a ***json**, set the [layout type to `json`](docs-content://deploy-manage/monitor/logging-configuration/kibana-log-settings-examples.md#log-in-json-ecs-example). |
| `logging.appenders[].file:` | Allows you to specify a fileName to write log records to disk. To write [all log records to file](docs-content://deploy-manage/monitor/logging-configuration/kibana-log-settings-examples.md#log-to-file-example), add the file appender to `root.appenders`. If configured, you also need to specify [`logging.appenders.file.pathName`](docs-content://deploy-manage/monitor/logging-configuration/kibana-log-settings-examples.md#log-to-file-example). |
| `logging.appenders[].rolling-file:` | Similar to [Log4j’s](https://logging.apache.org/log4j/2.x/) `RollingFileAppender`, this appender will log to a file and rotate if following a rolling strategy when the configured policy triggers. There are currently two policies supported: [`size-limit`](docs-content://deploy-manage/monitor/logging-configuration/kibana-logging.md#size-limit-triggering-policy) and [`time-interval`](docs-content://deploy-manage/monitor/logging-configuration/kibana-logging.md#time-interval-triggering-policy). |
| `logging.appenders[].<appender-name>.type` | The appender type determines where the log messages are sent. Options are `console`, `file`, `rewrite`, `rolling-file`. Required. |
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ const stripAnsiSnapshotSerializer: jest.SnapshotSerializerPlugin = {
};

const timestamp = new Date(Date.UTC(2012, 1, 1, 14, 30, 22, 11));
const error = new Error('Meta error');
error.stack = 'Meta error stack';
const records: LogRecord[] = [
{
context: 'context-1',
Expand All @@ -31,6 +33,9 @@ const records: LogRecord[] = [
name: 'Some error name',
stack: 'Some error stack',
},
meta: {
error,
},
level: LogLevel.Fatal,
message: 'message-1',
timestamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ import {
MetaConversion,
MessageConversion,
DateConversion,
ErrorConversion,
} from '@kbn/core-logging-common-internal';

const DEFAULT_PATTERN = `[%date][%level][%logger] %message`;

const conversions: Conversion[] = [
LoggerConversion,
MessageConversion,
LevelConversion,
MetaConversion,
DateConversion,
ErrorConversion,
];

/**
Expand All @@ -33,7 +33,7 @@ const conversions: Conversion[] = [
* @internal
*/
export class PatternLayout extends BasePatternLayout {
constructor(pattern: string = DEFAULT_PATTERN) {
constructor(pattern?: string) {
super({
pattern,
highlight: false,
Expand Down
1 change: 1 addition & 0 deletions src/core/packages/logging/common-internal/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export {
MessageConversion,
LevelConversion,
MetaConversion,
ErrorConversion,
type Conversion,
AbstractLogger,
type CreateLogRecordFn,
Expand Down
1 change: 1 addition & 0 deletions src/core/packages/logging/common-internal/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export {
MessageConversion,
LevelConversion,
MetaConversion,
ErrorConversion,
type Conversion,
} from './layouts';
export { AbstractLogger, type CreateLogRecordFn } from './logger';
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

// import { EcsError } from '@elastic/ecs';
import { LogRecord } from '@kbn/logging';
import { Conversion } from './types';

function isError(x: any): x is Error {
return x instanceof Error;
}

export const ErrorConversion: Conversion = {
pattern: /%error/g,
convert(record: LogRecord) {
let error;
if (isError(record.meta?.error)) {
error = record.meta?.error.stack;
}
return error ? `${error}` : '';
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ export { LevelConversion } from './level';
export { MessageConversion } from './message';
export { MetaConversion } from './meta';
export { DateConversion } from './date';
export { ErrorConversion } from './error';
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ export {
MessageConversion,
LevelConversion,
MetaConversion,
ErrorConversion,
type Conversion,
} from './conversions';
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ const stripAnsiSnapshotSerializer: jest.SnapshotSerializerPlugin = {
};

const timestamp = new Date(Date.UTC(2012, 1, 1, 14, 30, 22, 11));
const error = new Error('Meta error');
error.stack = 'Meta error stack';
const records: LogRecord[] = [
{
context: 'context-1',
Expand All @@ -31,6 +33,9 @@ const records: LogRecord[] = [
name: 'Some error name',
stack: 'Some error stack',
},
meta: {
error,
},
level: LogLevel.Fatal,
message: 'message-1',
timestamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,21 @@ import {
MetaConversion,
MessageConversion,
DateConversion,
ErrorConversion,
} from './conversions';

/**
* Default pattern used by PatternLayout if it's not overridden in the configuration.
*/
const DEFAULT_PATTERN = `[%date][%level][%logger] %message`;
const DEFAULT_PATTERN = `[%date][%level][%logger] %message %error`;

const DEFAULT_CONVERSIONS: Conversion[] = [
LoggerConversion,
MessageConversion,
LevelConversion,
MetaConversion,
DateConversion,
ErrorConversion,
];

export interface PatternLayoutOptions {
Expand Down Expand Up @@ -69,6 +71,6 @@ export class PatternLayout implements Layout {
);
}

return recordString;
return recordString.trim();
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ export {
DateConversion,
MessageConversion,
MetaConversion,
ErrorConversion,
} from '@kbn/core-logging-common-internal';
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ const stripAnsiSnapshotSerializer: jest.SnapshotSerializerPlugin = {
};

const timestamp = new Date(Date.UTC(2012, 1, 1, 14, 30, 22, 11));
const error = new Error('Meta error');
error.stack = 'Meta error stack';
const records: LogRecord[] = [
{
context: 'context-1',
Expand All @@ -31,6 +33,9 @@ const records: LogRecord[] = [
name: 'Some error name',
stack: 'Some error stack',
},
meta: {
error,
},
level: LogLevel.Fatal,
message: 'message-1',
timestamp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ import {
MessageConversion,
PidConversion,
DateConversion,
ErrorConversion,
} from './conversions';

const DEFAULT_PATTERN = `[%date][%level][%logger] %message`;

export const patternSchema = schema.string({
maxLength: 1000,
validate: (string) => {
Expand All @@ -43,6 +42,7 @@ const conversions: Conversion[] = [
MetaConversion,
PidConversion,
DateConversion,
ErrorConversion,
];

/**
Expand All @@ -53,7 +53,7 @@ const conversions: Conversion[] = [
export class PatternLayout extends BasePatternLayout {
public static configSchema = patternLayoutSchema;

constructor(pattern: string = DEFAULT_PATTERN, highlight: boolean = false) {
constructor(pattern?: string, highlight: boolean = false) {
super({
pattern,
highlight,
Expand Down
2 changes: 1 addition & 1 deletion src/core/server/docs/kib_core_logging.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ There are two types of layout supported at the moment: `pattern` and `json`.
### Pattern layout
With `pattern` layout it's possible to define a string pattern with special placeholders `%conversion_pattern` (see the table below) that
will be replaced with data from the actual log message. By default the following pattern is used:
`[%date][%level][%logger] %message`. Also `highlight` option can be enabled for `pattern` layout so that
`[%date][%level][%logger] %message %error`. Also `highlight` option can be enabled for `pattern` layout so that
some parts of the log message are highlighted with different colors that may be quite handy if log messages are forwarded
to the terminal with color support.
`pattern` layout uses a sub-set of [log4j2 pattern syntax](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout)
Expand Down
Loading