logpolicy

package
v0.0.0-...-113f59a Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2024 License: BSD-3-Clause Imports: 44 Imported by: 0

Documentation

Overview

Package logpolicy manages the creation or reuse of logtail loggers, caching collection instance state on disk for use on future runs of programs on the same machine.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LogHost deprecated

func LogHost() string

LogHost returns the hostname only (without port) of the configured logtail server, or the default.

Deprecated: Use LogURL instead.

func LogURL

func LogURL() string

LogURL is the base URL for the configured logtail server, or the default. It is guaranteed to not terminate with any forward slashes.

func LogsDir

func LogsDir(logf logger.Logf) string

LogsDir returns the directory to use for log configuration and buffer storage.

func MakeDialFunc

func MakeDialFunc(netMon *netmon.Monitor, logf logger.Logf) func(ctx context.Context, netw, addr string) (net.Conn, error)

MakeDialFunc creates a net.Dialer.DialContext function specialized for use by logtail. It does the following:

  • If DNS lookup fails, consults the bootstrap DNS list of Tailscale hostnames.
  • If TLS connection fails, try again using LetsEncrypt's built-in root certificate, for the benefit of older OS platforms which might not include it.

The netMon parameter is optional; if non-nil it's used to do faster interface lookups.

func NewLogtailTransport

func NewLogtailTransport(host string, netMon *netmon.Monitor, logf logger.Logf) http.RoundTripper

NewLogtailTransport returns an HTTP Transport particularly suited to uploading logs to the given host name. See DialContext for details on how it works.

The netMon parameter is optional; if non-nil it's used to do faster interface lookups.

The logf parameter is optional; if non-nil, logs are printed using the provided function; if nil, log.Printf will be used instead.

Types

type Config

type Config struct {
	Collection string
	PrivateID  logid.PrivateID
	PublicID   logid.PublicID
}

Config represents an instance of logs in a collection.

func ConfigFromBytes

func ConfigFromBytes(jsonEnc []byte) (*Config, error)

ConfigFromBytes parses a Config from its JSON encoding.

func ConfigFromFile

func ConfigFromFile(statefile string) (*Config, error)

ConfigFromFile reads a Config from a JSON file.

func NewConfig

func NewConfig(collection string) *Config

NewConfig creates a Config with collection and a newly generated PrivateID.

func (*Config) Save

func (c *Config) Save(stateFile string) error

Save writes the JSON representation of c to stateFile.

func (*Config) ToBytes

func (c *Config) ToBytes() []byte

ToBytes returns the JSON representation of c.

func (*Config) Validate

func (c *Config) Validate(collection string) error

Validate verifies that the Config matches the collection, and that the PrivateID and PublicID pair are sensible.

type Policy

type Policy struct {
	// Logtail is the logger.
	Logtail *logtail.Logger
	// PublicID is the logger's instance identifier.
	PublicID logid.PublicID
	// Logf is where to write informational messages about this Logger.
	Logf logger.Logf
}

Policy is a logger and its public ID.

func New

func New(collection string, netMon *netmon.Monitor, logf logger.Logf) *Policy

New returns a new log policy (a logger and its instance ID) for a given collection name.

The netMon parameter is optional; if non-nil it's used to do faster interface lookups.

The logf parameter is optional; if non-nil, information logs (e.g. when migrating state) are sent to that logger, and global changes to the log package are avoided. If nil, logs will be printed using log.Printf.

func NewWithConfigPath

func NewWithConfigPath(collection, dir, cmdName string, netMon *netmon.Monitor, logf logger.Logf) *Policy

NewWithConfigPath is identical to New, but uses the specified directory and command name. If either is empty, it derives them automatically.

func (*Policy) Close

func (p *Policy) Close()

Close immediately shuts down the logger.

func (*Policy) SetVerbosityLevel

func (p *Policy) SetVerbosityLevel(level int)

SetVerbosityLevel controls the verbosity level that should be written to stderr. 0 is the default (not verbose). Levels 1 or higher are increasingly verbose.

It should not be changed concurrently with log writes.

func (*Policy) Shutdown

func (p *Policy) Shutdown(ctx context.Context) error

Shutdown gracefully shuts down the logger, finishing any current log upload if it can be done before ctx is canceled.

Jump to

Keyboard shortcuts

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