logpb

package
v0.23.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthEvent        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowEvent          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupEvent = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthLog        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowLog          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupLog = fmt.Errorf("proto: unexpected end of group")
)
View Source
var Channel_name = map[int32]string{
	0:  "DEV",
	1:  "OPS",
	2:  "HEALTH",
	3:  "STORAGE",
	4:  "SESSIONS",
	5:  "SQL_SCHEMA",
	6:  "USER_ADMIN",
	7:  "PRIVILEGES",
	8:  "SENSITIVE_ACCESS",
	9:  "SQL_EXEC",
	10: "SQL_PERF",
	11: "SQL_INTERNAL_PERF",
	12: "TELEMETRY",
	13: "KV_DISTRIBUTION",
	14: "CHANNEL_MAX",
}
View Source
var Channel_value = map[string]int32{
	"DEV":               0,
	"OPS":               1,
	"HEALTH":            2,
	"STORAGE":           3,
	"SESSIONS":          4,
	"SQL_SCHEMA":        5,
	"USER_ADMIN":        6,
	"PRIVILEGES":        7,
	"SENSITIVE_ACCESS":  8,
	"SQL_EXEC":          9,
	"SQL_PERF":          10,
	"SQL_INTERNAL_PERF": 11,
	"TELEMETRY":         12,
	"KV_DISTRIBUTION":   13,
	"CHANNEL_MAX":       14,
}
View Source
var Severity_name = map[int32]string{
	0: "UNKNOWN",
	1: "INFO",
	2: "WARNING",
	3: "ERROR",
	4: "FATAL",
	5: "NONE",
	6: "DEFAULT",
}
View Source
var Severity_value = map[string]int32{
	"UNKNOWN": 0,
	"INFO":    1,
	"WARNING": 2,
	"ERROR":   3,
	"FATAL":   4,
	"NONE":    5,
	"DEFAULT": 6,
}

Functions

func GetEventTypeName

func GetEventTypeName(event EventPayload) string

GetEventTypeName retrieves the system.eventlog type name for the given payload.

Types

type Channel

type Channel int32

Channel is the logical logging channel on which a message is sent. Different channels can be redirected to different sinks. All messages from the same channel are sent to the same sink(s).

Note: do not forget to run gen.sh (go generate) when changing this list or the explanatory comments.

const (
	// DEV is used during development to collect log
	// details useful for troubleshooting that fall outside the
	// scope of other channels. It is also the default logging
	// channel for events not associated with a channel.
	//
	// This channel is special in that there are no constraints as to
	// what may or may not be logged on it. Conversely, users in
	// production deployments are invited to not collect `DEV` logs in
	// centralized logging facilities, because they likely contain
	// sensitive operational data.
	// See [Configure logs](configure-logs.html#dev-channel).
	Channel_DEV Channel = 0
	// OPS is used to report "point" operational events,
	// initiated by user operators or automation:
	//
	//   - Operator or system actions on server processes: process starts,
	//     stops, shutdowns, crashes (if they can be logged),
	//     including each time: command-line parameters, current version being run
	//   - Actions that impact the topology of a cluster: node additions,
	//     removals, decommissions, etc.
	//   - Job-related initiation or termination
	//   - [Cluster setting](cluster-settings.html) changes
	//   - [Zone configuration](configure-replication-zones.html) changes
	Channel_OPS Channel = 1
	// HEALTH is used to report "background" operational
	// events, initiated by CockroachDB or reporting on automatic processes:
	//
	//   - Current resource usage, including critical resource usage
	//   - Node-node connection events, including connection errors and
	//     gossip details
	//   - Range and table leasing events
	//   - Up- and down-replication, range unavailability
	Channel_HEALTH Channel = 2
	// STORAGE is used to report low-level storage
	// layer events (RocksDB/Pebble).
	Channel_STORAGE Channel = 3
	// SESSIONS is used to report client network activity when enabled via
	// the `server.auth_log.sql_connections.enabled` and/or
	// `server.auth_log.sql_sessions.enabled` [cluster setting](cluster-settings.html):
	//
	//   - Connections opened/closed
	//   - Authentication events: logins, failed attempts
	//   - Session and query cancellation
	//
	// This is typically configured in "audit" mode, with event
	// numbering and synchronous writes.
	Channel_SESSIONS Channel = 4
	// SQL_SCHEMA is used to report changes to the
	// SQL logical schema, excluding privilege and ownership changes
	// (which are reported separately on the `PRIVILEGES` channel) and
	// zone configuration changes (which go to the `OPS` channel).
	//
	// This includes:
	//
	//   - Database/schema/table/sequence/view/type creation
	//   - Adding/removing/changing table columns
	//   - Changing sequence parameters
	//
	// `SQL_SCHEMA` events generally comprise changes to the schema that affect the
	// functional behavior of client apps using stored objects.
	Channel_SQL_SCHEMA Channel = 5
	// USER_ADMIN is used to report changes
	// in users and roles, including:
	//
	//   - Users added/dropped
	//   - Changes to authentication credentials (e.g., passwords, validity, etc.)
	//   - Role grants/revocations
	//   - Role option grants/revocations
	//
	// This is typically configured in "audit" mode, with event
	// numbering and synchronous writes.
	Channel_USER_ADMIN Channel = 6
	// PRIVILEGES is used to report data
	// authorization changes, including:
	//
	//   - Privilege grants/revocations on database, objects, etc.
	//   - Object ownership changes
	//
	// This is typically configured in "audit" mode, with event
	// numbering and synchronous writes.
	Channel_PRIVILEGES Channel = 7
	// SENSITIVE_ACCESS is used to report SQL
	// data access to sensitive data:
	//
	//   - Data access audit events (when table audit is enabled via
	//     [ALTER TABLE ... EXPERIMENTAL_AUDIT](alter-table.html#experimental_audit))
	//   - Data access audit events (when role-based audit is enabled via
	//     [`sql.log.user_audit` cluster setting](role-based-audit-logging.html#syntax-of-audit-settings))
	//   - SQL statements executed by users with the admin role
	//   - Operations that write to system tables
	//
	// This is typically configured in "audit" mode, with event
	// numbering and synchronous writes.
	Channel_SENSITIVE_ACCESS Channel = 8
	// SQL_EXEC is used to report SQL execution on
	// behalf of client connections:
	//
	//   - Logical SQL statement executions (when enabled via the
	//     `sql.log.all_statements.enabled` [cluster setting](cluster-settings.html))
	//   - uncaught Go panic errors during the execution of a SQL statement.
	Channel_SQL_EXEC Channel = 9
	// SQL_PERF is used to report SQL executions
	// that are marked as "out of the ordinary"
	// to facilitate performance investigations.
	// This includes the SQL "slow query log".
	//
	// Arguably, this channel overlaps with `SQL_EXEC`.
	// However, we keep both channels separate for backward compatibility
	// with versions prior to v21.1, where the corresponding events
	// were redirected to separate files.
	Channel_SQL_PERF Channel = 10
	// SQL_INTERNAL_PERF is like the `SQL_PERF` channel, but is aimed at
	// helping developers of CockroachDB itself. It exists as a separate
	// channel so as to not pollute the `SQL_PERF` logging output with
	// internal troubleshooting details.
	Channel_SQL_INTERNAL_PERF Channel = 11
	// TELEMETRY reports telemetry events. Telemetry events describe
	// feature usage within CockroachDB and anonymizes any application-
	// specific data.
	Channel_TELEMETRY Channel = 12
	// KV_DISTRIBUTION is used to report data distribution events, such as moving
	// replicas between stores in the cluster, or adding (removing) replicas to
	// ranges.
	Channel_KV_DISTRIBUTION Channel = 13
	// CHANNEL_MAX is the maximum allocated channel number so far.
	// This should be increased every time a new channel is added.
	Channel_CHANNEL_MAX Channel = 14
)

func (Channel) EnumDescriptor

func (Channel) EnumDescriptor() ([]byte, []int)

func (Channel) String

func (x Channel) String() string

type CommonEventDetails

type CommonEventDetails struct {
	// The timestamp of the event. Expressed as nanoseconds since
	// the Unix epoch.
	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:",omitempty"`
	// The type of the event.
	EventType string `protobuf:"bytes,2,opt,name=event_type,json=eventType,proto3" json:",omitempty" redact:"nonsensitive"`
}

CommonEventDetails contains the fields common to all structed events.

func (*CommonEventDetails) AppendJSONFields

func (m *CommonEventDetails) AppendJSONFields(printComma bool, b redact.RedactableBytes) (bool, redact.RedactableBytes)

AppendJSONFields implements the EventPayload interface.

func (*CommonEventDetails) CommonDetails

func (m *CommonEventDetails) CommonDetails() *CommonEventDetails

CommonDetails implements the EventWithCommonPayload interface.

func (*CommonEventDetails) Descriptor

func (*CommonEventDetails) Descriptor() ([]byte, []int)

func (*CommonEventDetails) Marshal

func (m *CommonEventDetails) Marshal() (dAtA []byte, err error)

func (*CommonEventDetails) MarshalTo

func (m *CommonEventDetails) MarshalTo(dAtA []byte) (int, error)

func (*CommonEventDetails) MarshalToSizedBuffer

func (m *CommonEventDetails) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*CommonEventDetails) ProtoMessage

func (*CommonEventDetails) ProtoMessage()

func (*CommonEventDetails) Reset

func (m *CommonEventDetails) Reset()

func (*CommonEventDetails) Size

func (m *CommonEventDetails) Size() (n int)

func (*CommonEventDetails) String

func (m *CommonEventDetails) String() string

func (*CommonEventDetails) Unmarshal

func (m *CommonEventDetails) Unmarshal(dAtA []byte) error

func (*CommonEventDetails) XXX_DiscardUnknown

func (m *CommonEventDetails) XXX_DiscardUnknown()

func (*CommonEventDetails) XXX_Marshal

func (m *CommonEventDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CommonEventDetails) XXX_Merge

func (m *CommonEventDetails) XXX_Merge(src proto.Message)

func (*CommonEventDetails) XXX_Size

func (m *CommonEventDetails) XXX_Size() int

func (*CommonEventDetails) XXX_Unmarshal

func (m *CommonEventDetails) XXX_Unmarshal(b []byte) error

type Entry

type Entry struct {
	// Severity is the importance of the log entry. See the
	// documentation for the Severity enum for more details.
	Severity Severity `protobuf:"varint,1,opt,name=severity,proto3,enum=cockroach.util.log.Severity" json:"severity,omitempty"`
	// Nanoseconds since the epoch.
	Time int64 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"`
	// Goroutine ID. This helps match logging events with goroutine
	// stack dumps.
	Goroutine int64 `protobuf:"varint,6,opt,name=goroutine,proto3" json:"goroutine,omitempty"`
	// File name where the logging event was produced. Logging client
	// code can adjust this with the "depth" parameter.
	File string `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"`
	// Line number in the file where the logging event was produced.
	Line int64 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
	// Message contains the main text of the logging message.
	Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
	// Tags contains the context tags available in the context where the
	// entry was created.
	Tags string `protobuf:"bytes,7,opt,name=tags,proto3" json:"tags,omitempty"`
	// Counter is an entry counter, meant for use in audit logs as an
	// instrument against log repudiation.
	// See: https://en.wikipedia.org/wiki/Non-repudiation
	//
	// It is incremented for every use of the logger where the entry was
	// produced.
	Counter uint64 `protobuf:"varint,8,opt,name=counter,proto3" json:"counter,omitempty"`
	// Redactable is true if the message and tags fields include markers
	// to delineate sensitive information. In that case, confidentiality
	// can be obtained by only stripping away the data within this
	// marker. If redactable is false or unknown, the message should be
	// considered to only contain sensitive information, and should be
	// stripped away completely for confidentiality.
	Redactable bool `protobuf:"varint,9,opt,name=redactable,proto3" json:"redactable,omitempty"`
	// Channel is the channel on which the message was sent.
	Channel Channel `protobuf:"varint,10,opt,name=channel,proto3,enum=cockroach.util.log.Channel" json:"channel,omitempty"`
	// StructuredEnd, if non-zero, indicates that the entry
	// is structured; it is also the index
	// inside the Message field where the JSON payload ends (exclusive).
	StructuredEnd uint32 `protobuf:"varint,11,opt,name=structured_end,json=structuredEnd,proto3" json:"structured_end,omitempty"`
	// StructuredStart, when StructuredEnd is non-zero, is the index
	// inside the Message field where the JSON payload starts (inclusive).
	StructuredStart uint32 `protobuf:"varint,12,opt,name=structured_start,json=structuredStart,proto3" json:"structured_start,omitempty"`
	// StackTraceStart is the index inside Message where a detailed
	// stack trace starts. If zero, no stack trace is present. Stack
	// traces are always separated from the message using a newline
	// character. If a stack trace is included, StackTracePosition is
	// the index of the character immediately after the newline
	// character.
	//
	// We use an index-in-string field in the protobuf, instead of two
	// separate string fields, because previous-version consumers of
	// Entry are still expecting the message and the stack trace in the
	// same field.
	StackTraceStart uint32 `protobuf:"varint,13,opt,name=stack_trace_start,json=stackTraceStart,proto3" json:"stack_trace_start,omitempty"`
	// TenantID is the tenant ID that the log entry originated from. NB: if a
	// log entry was not found to contain any tenant ID, we default to the system
	// tenant ID.
	TenantID string `protobuf:"bytes,14,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// TenantName is the tenant name that the log entry originated from. NB: if a
	// log entry was not found to contain any tenant name, we default to the empty
	// string.
	TenantName string `protobuf:"bytes,15,opt,name=tenant_name,json=tenantName,proto3" json:"tenant_name,omitempty"`
}

Entry represents a cockroach log entry in the following two cases:

  • when reading a log file using the crdb-v1 format, entries are parsed into this struct.
  • when injecting an interceptor into the logging package, the interceptor is fed entries using this structure.

func (*Entry) Descriptor

func (*Entry) Descriptor() ([]byte, []int)

func (*Entry) Marshal

func (m *Entry) Marshal() (dAtA []byte, err error)

func (*Entry) MarshalTo

func (m *Entry) MarshalTo(dAtA []byte) (int, error)

func (*Entry) MarshalToSizedBuffer

func (m *Entry) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Entry) ProtoMessage

func (*Entry) ProtoMessage()

func (*Entry) Reset

func (m *Entry) Reset()

func (*Entry) Size

func (m *Entry) Size() (n int)

func (*Entry) String

func (m *Entry) String() string

func (*Entry) Unmarshal

func (m *Entry) Unmarshal(dAtA []byte) error

func (*Entry) XXX_DiscardUnknown

func (m *Entry) XXX_DiscardUnknown()

func (*Entry) XXX_Marshal

func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Entry) XXX_Merge

func (m *Entry) XXX_Merge(src proto.Message)

func (*Entry) XXX_Size

func (m *Entry) XXX_Size() int

func (*Entry) XXX_Unmarshal

func (m *Entry) XXX_Unmarshal(b []byte) error

type EventPayload

type EventPayload interface {
	// CommonDetails gives access to the common payload.
	CommonDetails() *CommonEventDetails
	// LoggingChannel indicates which logging channel to send this event to.
	// This is defined by the event category, at the top of each .proto file.
	LoggingChannel() Channel
	// AppendJSONFields appends the JSON representation of the event's
	// fields to the given redactable byte slice. Note that the
	// representation is missing the outside '{' and '}'
	// delimiters. This is intended so that the outside printer can
	// decide how to embed the event in a larger payload.
	//
	// The printComma, if true, indicates whether to print a comma
	// before the first field. The returned bool value indicates whether
	// to print a comma when appending more fields afterwards.
	AppendJSONFields(printComma bool, b redact.RedactableBytes) (bool, redact.RedactableBytes)
}

EventPayload is implemented by CommonEventDetails.

type FileDetails

type FileDetails struct {
	// program contains the combination of program name and log file
	// group name, separated by a hyphen. The program name part is
	// guaranteed to not contain hyphens itself; if there had been any
	// in the executable file name, they would be escaped to
	// underscores. The first hyphen separates the program name from the
	// file group name. The file group itself can contain hyphens.
	//
	// For example, if the field is set to "mybinary-my-log-group",
	// the program name is "mybinary" and the file group is "my-log-group".
	//
	// The field is also guaranteed not to contain periods. If there had
	// been periods in the executable file name, they would be replaced
	// by underscores.
	Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"`
	// host is the hostname part of the file name.
	// The field is guaranteed not to contain periods. If there had
	// been periods in the hostname, they would be replaced by underscores.
	Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
	// user_name is the unix username part of the file name.
	// The field is guaranteed not to contain periods. If there had
	// been periods in the username, they would be replaced by underscores.
	UserName string `protobuf:"bytes,3,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	Time     int64  `protobuf:"varint,5,opt,name=time,proto3" json:"time,omitempty"`
	PID      int64  `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"`
}

A FileDetails holds all of the particulars that can be parsed by the name of a log file.

func (*FileDetails) Descriptor

func (*FileDetails) Descriptor() ([]byte, []int)

func (*FileDetails) Marshal

func (m *FileDetails) Marshal() (dAtA []byte, err error)

func (*FileDetails) MarshalTo

func (m *FileDetails) MarshalTo(dAtA []byte) (int, error)

func (*FileDetails) MarshalToSizedBuffer

func (m *FileDetails) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*FileDetails) ProtoMessage

func (*FileDetails) ProtoMessage()

func (*FileDetails) Reset

func (m *FileDetails) Reset()

func (*FileDetails) Size

func (m *FileDetails) Size() (n int)

func (*FileDetails) String

func (m *FileDetails) String() string

func (*FileDetails) Unmarshal

func (m *FileDetails) Unmarshal(dAtA []byte) error

func (*FileDetails) XXX_DiscardUnknown

func (m *FileDetails) XXX_DiscardUnknown()

func (*FileDetails) XXX_Marshal

func (m *FileDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FileDetails) XXX_Merge

func (m *FileDetails) XXX_Merge(src proto.Message)

func (*FileDetails) XXX_Size

func (m *FileDetails) XXX_Size() int

func (*FileDetails) XXX_Unmarshal

func (m *FileDetails) XXX_Unmarshal(b []byte) error

type FileInfo

type FileInfo struct {
	Name         string      `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SizeBytes    int64       `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
	ModTimeNanos int64       `protobuf:"varint,3,opt,name=mod_time_nanos,json=modTimeNanos,proto3" json:"mod_time_nanos,omitempty"`
	Details      FileDetails `protobuf:"bytes,4,opt,name=details,proto3" json:"details"`
	FileMode     uint32      `protobuf:"varint,5,opt,name=file_mode,json=fileMode,proto3" json:"file_mode,omitempty"`
}

func (*FileInfo) Descriptor

func (*FileInfo) Descriptor() ([]byte, []int)

func (*FileInfo) Marshal

func (m *FileInfo) Marshal() (dAtA []byte, err error)

func (*FileInfo) MarshalTo

func (m *FileInfo) MarshalTo(dAtA []byte) (int, error)

func (*FileInfo) MarshalToSizedBuffer

func (m *FileInfo) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*FileInfo) ProtoMessage

func (*FileInfo) ProtoMessage()

func (*FileInfo) Reset

func (m *FileInfo) Reset()

func (*FileInfo) Size

func (m *FileInfo) Size() (n int)

func (*FileInfo) String

func (m *FileInfo) String() string

func (*FileInfo) Unmarshal

func (m *FileInfo) Unmarshal(dAtA []byte) error

func (*FileInfo) XXX_DiscardUnknown

func (m *FileInfo) XXX_DiscardUnknown()

func (*FileInfo) XXX_Marshal

func (m *FileInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FileInfo) XXX_Merge

func (m *FileInfo) XXX_Merge(src proto.Message)

func (*FileInfo) XXX_Size

func (m *FileInfo) XXX_Size() int

func (*FileInfo) XXX_Unmarshal

func (m *FileInfo) XXX_Unmarshal(b []byte) error

type Severity

type Severity int32

Severity is the severity level of individual log events.

Note: do not forget to run gen.sh (go generate) when changing this list or the explanatory comments.

const (
	// UNKNOWN is populated into decoded log entries when the
	// severity could not be determined.
	Severity_UNKNOWN Severity = 0
	// INFO is used for informational messages that do not
	// require action.
	Severity_INFO Severity = 1
	// WARNING is used for situations which may require special handling,
	// where normal operation is expected to resume automatically.
	Severity_WARNING Severity = 2
	// ERROR is used for situations that require special handling,
	// where normal operation could not proceed as expected.
	// Other operations can continue mostly unaffected.
	Severity_ERROR Severity = 3
	// FATAL is used for situations that require an immedate, hard
	// server shutdown. A report is also sent to telemetry if telemetry
	// is enabled.
	Severity_FATAL Severity = 4
	// NONE can be used in filters to specify that no messages
	// should be emitted.
	Severity_NONE Severity = 5
	// DEFAULT is the end sentinel. It is used during command-line
	// handling to indicate that another value should be replaced instead
	// (depending on which command is being run); see cli/flags.go for
	// details.
	Severity_DEFAULT Severity = 6
)

func SeverityByName

func SeverityByName(s string) (Severity, bool)

SeverityByName attempts to parse the passed in string into a severity. (i.e. ERROR, INFO). If it succeeds, the returned bool is set to true.

func (Severity) EnumDescriptor

func (Severity) EnumDescriptor() ([]byte, []int)

func (Severity) IsSet

func (s Severity) IsSet() bool

IsSet returns true iff the severity was set to a non-unknown value.

func (Severity) MarshalYAML

func (s Severity) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface.

func (*Severity) Name

func (s *Severity) Name() string

Name returns the string representation of the severity (i.e. ERROR, INFO).

func (*Severity) Set

func (s *Severity) Set(value string) error

Set is part of the pflag.Value interface.

func (Severity) String

func (x Severity) String() string

func (Severity) Type

func (s Severity) Type() string

Type implements the pflag.Value interface.

func (*Severity) UnmarshalYAML

func (s *Severity) UnmarshalYAML(fn func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type TestingStructuredLogEvent

type TestingStructuredLogEvent struct {
	CommonEventDetails
	Channel
	Event string
}

TestingStructuredLogEvent is an implementation of EventPayload for use in tests, in order to avoid importing the eventpb package.

func (TestingStructuredLogEvent) AppendJSONFields

func (f TestingStructuredLogEvent) AppendJSONFields(
	printComma bool, b redact.RedactableBytes,
) (bool, redact.RedactableBytes)

AppendJSONFields is part of the EventPayload interface.

func (TestingStructuredLogEvent) CommonDetails

func (f TestingStructuredLogEvent) CommonDetails() *CommonEventDetails

CommonDetails is part of the EventPayload interface.

func (TestingStructuredLogEvent) LoggingChannel

func (f TestingStructuredLogEvent) LoggingChannel() Channel

LoggingChannel is part of the EventPayload interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL