Documentation
¶
Index ¶
- Constants
- Variables
- func IsDebugOrHigher() bool
- func LogLevel() string
- func LogOutput(t testing.T) (logOutput io.Writer, err error)
- func NewLoggingHTTPTransport(t http.RoundTripper) *loggingHttpTransport
- func NewSubsystemLoggingHTTPTransport(subsystem string, t http.RoundTripper) *loggingHttpTransport
- func NewTransport(name string, t http.RoundTripper) *transportdeprecated
- func SetOutput(t testing.T)
Constants ¶
const ( EnvLog = "TF_LOG" // See ValidLevels EnvLogFile = "TF_LOG_PATH" // Set to a file EnvAccLogFile = "TF_ACC_LOG_PATH" // Set to a file // EnvLogPathMask splits test log files by name. EnvLogPathMask = "TF_LOG_PATH_MASK" )
These are the environmental variables that determine if we log, and if we log whether or not the log should go to a file.
const ( // FieldHttpOperationType is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging the type of HTTP operation via tflog. FieldHttpOperationType = "tf_http_op_type" // OperationHttpRequest is the field value used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP request via tflog. OperationHttpRequest = "request" // OperationHttpResponse is the field value used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP response via tflog. OperationHttpResponse = "response" // FieldHttpRequestMethod is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP request method via tflog. FieldHttpRequestMethod = "tf_http_req_method" // FieldHttpRequestUri is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP request URI via tflog. FieldHttpRequestUri = "tf_http_req_uri" // FieldHttpRequestProtoVersion is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP request HTTP version via tflog. FieldHttpRequestProtoVersion = "tf_http_req_version" // FieldHttpRequestBody is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP request body via tflog. FieldHttpRequestBody = "tf_http_req_body" // FieldHttpResponseProtoVersion is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP response protocol version via tflog. FieldHttpResponseProtoVersion = "tf_http_res_version" // FieldHttpResponseStatusCode is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP response status code via tflog. FieldHttpResponseStatusCode = "tf_http_res_status_code" // FieldHttpResponseStatusReason is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP response status reason phrase via tflog. FieldHttpResponseStatusReason = "tf_http_res_status_reason" // FieldHttpResponseBody is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP response body via tflog. FieldHttpResponseBody = "tf_http_res_body" // FieldHttpTransactionId is the field key used by NewLoggingHTTPTransport // and NewSubsystemLoggingHTTPTransport when logging an HTTP transaction via tflog. FieldHttpTransactionId = "tf_http_trans_id" )
Variables ¶
var ValidLevels = []logutils.LogLevel{"TRACE", "DEBUG", "INFO", "WARN", "ERROR"}
Functions ¶
func IsDebugOrHigher ¶
func IsDebugOrHigher() bool
IsDebugOrHigher returns whether or not the current log level is debug or trace
func LogLevel ¶
func LogLevel() string
LogLevel returns the current log level string based the environment vars
func LogOutput ¶
LogOutput determines where we should send logs (if anywhere) and the log level. This only effects this log.Print* functions called in the provider under test. Dependency providers for the provider under test will have their logging controlled by Terraform itself and managed with the TF_ACC_LOG_PATH environment variable. Calls to tflog.* will have their output managed by the tfsdklog sink.
func NewLoggingHTTPTransport ¶ added in v2.20.0
func NewLoggingHTTPTransport(t http.RoundTripper) *loggingHttpTransport
NewLoggingHTTPTransport creates a wrapper around an *http.RoundTripper, designed to be used for the `Transport` field of http.Client.
This logs each pair of HTTP request/response that it handles. The logging is done via `tflog`, that is part of the terraform-plugin-log library, included by this SDK.
The request/response is logged via tflog.Debug, using the context.Context attached to the http.Request that the transport receives as input of http.RoundTripper RoundTrip method.
It's responsibility of the developer using this transport, to ensure that each http.Request it handles is configured with the SDK-initialized Provider Root Logger context.Context, that it's passed to all resources/data-sources/provider entry-points (i.e. schema.Resource fields like `CreateContext`, `ReadContext`, etc.).
This also gives the developer the flexibility to further configure the logging behaviour via the above-mentioned context: please see https://www.terraform.io/plugin/log/writing.
func NewSubsystemLoggingHTTPTransport ¶ added in v2.20.0
func NewSubsystemLoggingHTTPTransport(subsystem string, t http.RoundTripper) *loggingHttpTransport
NewSubsystemLoggingHTTPTransport creates a wrapper around an *http.RoundTripper, designed to be used for the `Transport` field of http.Client.
This logs each pair of HTTP request/response that it handles. The logging is done via `tflog`, that is part of the terraform-plugin-log library, included by this SDK.
The request/response is logged via tflog.SubsystemDebug, using the context.Context attached to the http.Request that the transport receives as input of http.RoundTripper RoundTrip method, as well as the `subsystem` string provided at construction time.
It's responsibility of the developer using this transport, to ensure that each http.Request it handles is configured with a Subsystem Logger context.Context that was initialized via tflog.NewSubsystem.
This also gives the developer the flexibility to further configure the logging behaviour via the above-mentioned context: please see https://www.terraform.io/plugin/log/writing.
Please note: setting `subsystem` to an empty string it's equivalent to using NewLoggingHTTPTransport.
func NewTransport
deprecated
func NewTransport(name string, t http.RoundTripper) *transport
NewTransport creates a wrapper around a *http.RoundTripper, designed to be used for the `Transport` field of http.Client.
This logs each pair of HTTP request/response that it handles. The logging is done via Go standard library `log` package.
Deprecated: This will log the content of every http request/response at `[DEBUG]` level, without any filtering. Any sensitive information will appear as-is in your logs. Please use NewSubsystemLoggingHTTPTransport instead.
Types ¶
This section is empty.