diff --git a/docs/development/core/server/kibana-plugin-core-server.appenderconfigtype.md b/docs/development/core/server/kibana-plugin-core-server.appenderconfigtype.md
index 9c70e658014b3a..0838572f26f490 100644
--- a/docs/development/core/server/kibana-plugin-core-server.appenderconfigtype.md
+++ b/docs/development/core/server/kibana-plugin-core-server.appenderconfigtype.md
@@ -8,5 +8,5 @@
Signature:
```typescript
-export declare type AppenderConfigType = TypeOf;
+export declare type AppenderConfigType = ConsoleAppenderConfig | FileAppenderConfig | LegacyAppenderConfig;
```
diff --git a/src/core/server/index.ts b/src/core/server/index.ts
index 5422cbc2180ef7..c17d3d75467798 100644
--- a/src/core/server/index.ts
+++ b/src/core/server/index.ts
@@ -39,6 +39,7 @@
* @packageDocumentation
*/
+import { Type } from '@kbn/config-schema';
import {
ElasticsearchServiceSetup,
ILegacyScopedClusterClient,
@@ -46,7 +47,6 @@ import {
ElasticsearchServiceStart,
IScopedClusterClient,
} from './elasticsearch';
-
import { HttpServiceSetup, HttpServiceStart } from './http';
import { HttpResources } from './http_resources';
@@ -63,12 +63,7 @@ import { CapabilitiesSetup, CapabilitiesStart } from './capabilities';
import { MetricsServiceStart } from './metrics';
import { StatusServiceSetup } from './status';
import { Auditor, AuditTrailSetup, AuditTrailStart } from './audit_trail';
-import {
- LoggingServiceSetup,
- appendersSchema,
- loggerContextConfigSchema,
- loggerSchema,
-} from './logging';
+import { AppenderConfigType, appendersSchema, LoggingServiceSetup } from './logging';
export { AuditableEvent, Auditor, AuditorFactory, AuditTrailSetup } from './audit_trail';
export { bootstrap } from './bootstrap';
@@ -497,8 +492,6 @@ export const config = {
schema: elasticsearchConfigSchema,
},
logging: {
- appenders: appendersSchema,
- loggers: loggerSchema,
- loggerContext: loggerContextConfigSchema,
+ appenders: appendersSchema as Type,
},
};
diff --git a/src/core/server/legacy/logging/appenders/legacy_appender.ts b/src/core/server/legacy/logging/appenders/legacy_appender.ts
index 0c2f4ce93c3b84..a5d36423ba4c69 100644
--- a/src/core/server/legacy/logging/appenders/legacy_appender.ts
+++ b/src/core/server/legacy/logging/appenders/legacy_appender.ts
@@ -23,6 +23,11 @@ import { LogRecord } from '../../../logging/log_record';
import { LegacyLoggingServer } from '../legacy_logging_server';
import { LegacyVars } from '../../types';
+export interface LegacyAppenderConfig {
+ kind: 'legacy-appender';
+ legacyLoggingConfig?: any;
+}
+
/**
* Simple appender that just forwards `LogRecord` to the legacy KbnServer log.
* @internal
diff --git a/src/core/server/logging/appenders/appenders.ts b/src/core/server/logging/appenders/appenders.ts
index 3b90a10a1a76c3..edfce4988275ac 100644
--- a/src/core/server/logging/appenders/appenders.ts
+++ b/src/core/server/logging/appenders/appenders.ts
@@ -17,14 +17,17 @@
* under the License.
*/
-import { schema, TypeOf } from '@kbn/config-schema';
+import { schema } from '@kbn/config-schema';
import { assertNever } from '../../../utils';
-import { LegacyAppender } from '../../legacy/logging/appenders/legacy_appender';
+import {
+ LegacyAppender,
+ LegacyAppenderConfig,
+} from '../../legacy/logging/appenders/legacy_appender';
import { Layouts } from '../layouts/layouts';
import { LogRecord } from '../log_record';
-import { ConsoleAppender } from './console/console_appender';
-import { FileAppender } from './file/file_appender';
+import { ConsoleAppender, ConsoleAppenderConfig } from './console/console_appender';
+import { FileAppender, FileAppenderConfig } from './file/file_appender';
/**
* Config schema for validting the shape of the `appenders` key in in {@link LoggerContextConfigType} or
@@ -39,7 +42,7 @@ export const appendersSchema = schema.oneOf([
]);
/** @public */
-export type AppenderConfigType = TypeOf;
+export type AppenderConfigType = ConsoleAppenderConfig | FileAppenderConfig | LegacyAppenderConfig;
/**
* Entity that can append `LogRecord` instances to file, stdout, memory or whatever
diff --git a/src/core/server/logging/appenders/console/console_appender.ts b/src/core/server/logging/appenders/console/console_appender.ts
index b4420c12a23cab..a54674b1d347ce 100644
--- a/src/core/server/logging/appenders/console/console_appender.ts
+++ b/src/core/server/logging/appenders/console/console_appender.ts
@@ -19,13 +19,19 @@
import { schema } from '@kbn/config-schema';
-import { Layout, Layouts } from '../../layouts/layouts';
+import { Layout, Layouts, LayoutConfigType } from '../../layouts/layouts';
import { LogRecord } from '../../log_record';
import { DisposableAppender } from '../appenders';
const { literal, object } = schema;
+export interface ConsoleAppenderConfig {
+ kind: 'console';
+ layout: LayoutConfigType;
+}
+
/**
+ *
* Appender that formats all the `LogRecord` instances it receives and logs them via built-in `console`.
* @internal
*/
diff --git a/src/core/server/logging/appenders/file/file_appender.ts b/src/core/server/logging/appenders/file/file_appender.ts
index 728e82ebcec9a1..a0e484cd87c8f5 100644
--- a/src/core/server/logging/appenders/file/file_appender.ts
+++ b/src/core/server/logging/appenders/file/file_appender.ts
@@ -20,10 +20,16 @@
import { schema } from '@kbn/config-schema';
import { createWriteStream, WriteStream } from 'fs';
-import { Layout, Layouts } from '../../layouts/layouts';
+import { Layout, Layouts, LayoutConfigType } from '../../layouts/layouts';
import { LogRecord } from '../../log_record';
import { DisposableAppender } from '../appenders';
+export interface FileAppenderConfig {
+ kind: 'file';
+ layout: LayoutConfigType;
+ path: string;
+}
+
/**
* Appender that formats all the `LogRecord` instances it receives and writes them to the specified file.
* @internal
diff --git a/src/core/server/logging/layouts/json_layout.ts b/src/core/server/logging/layouts/json_layout.ts
index 04416184a59576..37eb6b8c4806e8 100644
--- a/src/core/server/logging/layouts/json_layout.ts
+++ b/src/core/server/logging/layouts/json_layout.ts
@@ -19,7 +19,7 @@
import moment from 'moment-timezone';
import { merge } from 'lodash';
-import { schema, TypeOf } from '@kbn/config-schema';
+import { schema } from '@kbn/config-schema';
import { LogRecord } from '../log_record';
import { Layout } from './layouts';
@@ -31,7 +31,9 @@ const jsonLayoutSchema = object({
});
/** @internal */
-export type JsonLayoutConfigType = TypeOf;
+export interface JsonLayoutConfigType {
+ kind: 'json';
+}
/**
* Layout that just converts `LogRecord` into JSON string.
diff --git a/src/core/server/logging/layouts/layouts.ts b/src/core/server/logging/layouts/layouts.ts
index 0e6a6360cab2e3..124c007bae1040 100644
--- a/src/core/server/logging/layouts/layouts.ts
+++ b/src/core/server/logging/layouts/layouts.ts
@@ -26,7 +26,7 @@ import { PatternLayout, PatternLayoutConfigType } from './pattern_layout';
const { oneOf } = schema;
-type LayoutConfigType = PatternLayoutConfigType | JsonLayoutConfigType;
+export type LayoutConfigType = PatternLayoutConfigType | JsonLayoutConfigType;
/**
* Entity that can format `LogRecord` instance into a string.
diff --git a/src/core/server/logging/layouts/pattern_layout.ts b/src/core/server/logging/layouts/pattern_layout.ts
index 7839345a3703ba..5dfc8aca77f181 100644
--- a/src/core/server/logging/layouts/pattern_layout.ts
+++ b/src/core/server/logging/layouts/pattern_layout.ts
@@ -17,7 +17,7 @@
* under the License.
*/
-import { schema, TypeOf } from '@kbn/config-schema';
+import { schema } from '@kbn/config-schema';
import { LogRecord } from '../log_record';
import { Layout } from './layouts';
@@ -58,7 +58,11 @@ const conversions: Conversion[] = [
];
/** @internal */
-export type PatternLayoutConfigType = TypeOf;
+export interface PatternLayoutConfigType {
+ kind: 'pattern';
+ highlight?: boolean;
+ pattern?: string;
+}
/**
* Layout that formats `LogRecord` using the `pattern` string with optional
diff --git a/src/core/server/logging/logging_config.ts b/src/core/server/logging/logging_config.ts
index a6aafabeb970cf..a6ab15dc29fdfe 100644
--- a/src/core/server/logging/logging_config.ts
+++ b/src/core/server/logging/logging_config.ts
@@ -96,7 +96,9 @@ export const config = {
}),
};
-export type LoggingConfigType = TypeOf;
+export type LoggingConfigType = Omit, 'appenders'> & {
+ appenders: Map;
+};
/**
* Config schema for validating the inputs to the {@link LoggingServiceStart.configure} API.
diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md
index 3270e5a09afdec..081554cd17f259 100644
--- a/src/core/server/server.api.md
+++ b/src/core/server/server.api.md
@@ -153,10 +153,12 @@ import { UpdateDocumentByQueryParams } from 'elasticsearch';
import { UpdateDocumentParams } from 'elasticsearch';
import { Url } from 'url';
-// Warning: (ae-forgotten-export) The symbol "appendersSchema" needs to be exported by the entry point index.d.ts
+// Warning: (ae-forgotten-export) The symbol "ConsoleAppenderConfig" needs to be exported by the entry point index.d.ts
+// Warning: (ae-forgotten-export) The symbol "FileAppenderConfig" needs to be exported by the entry point index.d.ts
+// Warning: (ae-forgotten-export) The symbol "LegacyAppenderConfig" needs to be exported by the entry point index.d.ts
//
// @public (undocumented)
-export type AppenderConfigType = TypeOf;
+export type AppenderConfigType = ConsoleAppenderConfig | FileAppenderConfig | LegacyAppenderConfig;
// @public
export function assertNever(x: never): never;
@@ -325,108 +327,45 @@ export type CapabilitiesSwitcher = (request: KibanaRequest, uiCapabilities: Capa
export const config: {
elasticsearch: {
schema: import("@kbn/config-schema").ObjectType<{
- sniffOnStart: import("@kbn/config-schema").Type;
- sniffInterval: import("@kbn/config-schema").Type;
- sniffOnConnectionFault: import("@kbn/config-schema").Type;
- hosts: import("@kbn/config-schema").Type;
- preserveHost: import("@kbn/config-schema").Type;
- username: import("@kbn/config-schema").Type;
- password: import("@kbn/config-schema").Type;
- requestHeadersWhitelist: import("@kbn/config-schema").Type;
- customHeaders: import("@kbn/config-schema").Type>;
- shardTimeout: import("@kbn/config-schema").Type;
- requestTimeout: import("@kbn/config-schema").Type;
- pingTimeout: import("@kbn/config-schema").Type;
- startupTimeout: import("@kbn/config-schema").Type;
- logQueries: import("@kbn/config-schema").Type;
+ sniffOnStart: Type;
+ sniffInterval: Type;
+ sniffOnConnectionFault: Type;
+ hosts: Type;
+ preserveHost: Type;
+ username: Type;
+ password: Type;
+ requestHeadersWhitelist: Type;
+ customHeaders: Type>;
+ shardTimeout: Type;
+ requestTimeout: Type;
+ pingTimeout: Type;
+ startupTimeout: Type;
+ logQueries: Type;
ssl: import("@kbn/config-schema").ObjectType<{
- verificationMode: import("@kbn/config-schema").Type<"none" | "certificate" | "full">;
- certificateAuthorities: import("@kbn/config-schema").Type;
- certificate: import("@kbn/config-schema").Type;
- key: import("@kbn/config-schema").Type;
- keyPassphrase: import("@kbn/config-schema").Type;
+ verificationMode: Type<"none" | "certificate" | "full">;
+ certificateAuthorities: Type;
+ certificate: Type;
+ key: Type;
+ keyPassphrase: Type;
keystore: import("@kbn/config-schema").ObjectType<{
- path: import("@kbn/config-schema").Type;
- password: import("@kbn/config-schema").Type;
+ path: Type;
+ password: Type;
}>;
truststore: import("@kbn/config-schema").ObjectType<{
- path: import("@kbn/config-schema").Type;
- password: import("@kbn/config-schema").Type;
+ path: Type;
+ password: Type;
}>;
- alwaysPresentCertificate: import("@kbn/config-schema").Type;
+ alwaysPresentCertificate: Type;
}>;
- apiVersion: import("@kbn/config-schema").Type;
+ apiVersion: Type;
healthCheck: import("@kbn/config-schema").ObjectType<{
- delay: import("@kbn/config-schema").Type;
+ delay: Type;
}>;
ignoreVersionMismatch: import("@kbn/config-schema/target/types/types").ConditionalType;
}>;
};
logging: {
- appenders: import("@kbn/config-schema").Type | Readonly<{
- pattern?: string | undefined;
- highlight?: boolean | undefined;
- } & {
- kind: "pattern";
- }>;
- kind: "console";
- }> | Readonly<{} & {
- path: string;
- layout: Readonly<{} & {
- kind: "json";
- }> | Readonly<{
- pattern?: string | undefined;
- highlight?: boolean | undefined;
- } & {
- kind: "pattern";
- }>;
- kind: "file";
- }> | Readonly<{
- legacyLoggingConfig?: any;
- } & {
- kind: "legacy-appender";
- }>>;
- loggers: import("@kbn/config-schema").ObjectType<{
- appenders: import("@kbn/config-schema").Type;
- context: import("@kbn/config-schema").Type;
- level: import("@kbn/config-schema").Type;
- }>;
- loggerContext: import("@kbn/config-schema").ObjectType<{
- appenders: import("@kbn/config-schema").Type