Source File
writer.go
Belonging Package
go.uber.org/zap
// Copyright (c) 2016-2022 Uber Technologies, Inc.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to deal// in the Software without restriction, including without limitation the rights// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell// copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN// THE SOFTWARE.package zapimport ()// Open is a high-level wrapper that takes a variadic number of URLs, opens or// creates each of the specified resources, and combines them into a locked// WriteSyncer. It also returns any error encountered and a function to close// any opened files.//// Passing no URLs returns a no-op WriteSyncer. Zap handles URLs without a// scheme and URLs with the "file" scheme. Third-party code may register// factories for other schemes using RegisterSink.//// URLs with the "file" scheme must use absolute paths on the local// filesystem. No user, password, port, fragments, or query parameters are// allowed, and the hostname must be empty or "localhost".//// Since it's common to write logs to the local filesystem, URLs without a// scheme (e.g., "/var/log/foo.log") are treated as local file paths. Without// a scheme, the special paths "stdout" and "stderr" are interpreted as// os.Stdout and os.Stderr. When specified without a scheme, relative file// paths also work.func ( ...string) (zapcore.WriteSyncer, func(), error) {, , := open()if != nil {return nil, nil,}:= CombineWriteSyncers(...)return , , nil}func ( []string) ([]zapcore.WriteSyncer, func(), error) {:= make([]zapcore.WriteSyncer, 0, len()):= make([]io.Closer, 0, len()):= func() {for , := range {_ = .Close()}}var errorfor , := range {, := _sinkRegistry.newSink()if != nil {= multierr.Append(, fmt.Errorf("open sink %q: %w", , ))continue}= append(, )= append(, )}if != nil {()return nil, nil,}return , , nil}// CombineWriteSyncers is a utility that combines multiple WriteSyncers into a// single, locked WriteSyncer. If no inputs are supplied, it returns a no-op// WriteSyncer.//// It's provided purely as a convenience; the result is no different from// using zapcore.NewMultiWriteSyncer and zapcore.Lock individually.func ( ...zapcore.WriteSyncer) zapcore.WriteSyncer {if len() == 0 {return zapcore.AddSync(io.Discard)}return zapcore.Lock(zapcore.NewMultiWriteSyncer(...))}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |