From 30341f219293d5cb1f911fcb943e02d87e9ab9bc Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Mon, 15 Aug 2022 19:20:20 +0300 Subject: [PATCH] [#1687] *: Perform `go fmt` using go `v1.19` Signed-off-by: Pavel Karpy --- cmd/neofs-cli/internal/client/doc.go | 8 +-- cmd/neofs-node/config/test/config.go | 4 +- pkg/innerring/processors/container/common.go | 18 +++---- .../processors/netmap/cleanup_table.go | 6 +-- .../netmap/nodevalidation/locode/calls.go | 12 ++--- pkg/innerring/processors/subnet/put.go | 6 +-- pkg/innerring/subnet.go | 8 +-- pkg/local_object_storage/engine/control.go | 4 +- pkg/local_object_storage/engine/inhume.go | 8 +-- pkg/local_object_storage/engine/lock.go | 6 +-- pkg/local_object_storage/metabase/exists.go | 8 +-- pkg/local_object_storage/shard/shard.go | 4 +- pkg/local_object_storage/writecache/doc.go | 10 ++-- pkg/morph/client/constructor.go | 12 ++--- pkg/morph/client/notary.go | 12 +++-- pkg/morph/client/static.go | 4 +- pkg/network/validation.go | 8 ++- pkg/services/control/ir/server/server.go | 4 +- pkg/services/control/types.pb.go | 50 +++++++++---------- pkg/services/object/internal/client/client.go | 14 +++--- .../object_manager/tombstone/checker.go | 4 +- .../eigentrust/controller/controller.go | 4 +- pkg/services/util/sign.go | 4 +- pkg/util/http/server.go | 2 +- pkg/util/logger/logger.go | 6 +-- 25 files changed, 114 insertions(+), 112 deletions(-) diff --git a/cmd/neofs-cli/internal/client/doc.go b/cmd/neofs-cli/internal/client/doc.go index ca96b2dd2c..9a8429d788 100644 --- a/cmd/neofs-cli/internal/client/doc.go +++ b/cmd/neofs-cli/internal/client/doc.go @@ -5,8 +5,8 @@ // the NeoFS CLI application does not fully use the client's flexible interface. // // In this regard, this package provides functions over base API client necessary for the application. -// This allows you to concentrate the entire spectrum of the client's use in one place (this will be convenient -// both when updating the base client and for evaluating the UX of SDK library). So it is expected that all -// application packages will be limited to this package for the development of functionality requiring -// NeoFS API communication. +// This allows you to concentrate the entire spectrum of the client's use in one place (this will be convenient +// both when updating the base client and for evaluating the UX of SDK library). So it is expected that all +// application packages will be limited to this package for the development of functionality requiring +// NeoFS API communication. package internal diff --git a/cmd/neofs-node/config/test/config.go b/cmd/neofs-node/config/test/config.go index 44474315c4..f7921ce599 100644 --- a/cmd/neofs-node/config/test/config.go +++ b/cmd/neofs-node/config/test/config.go @@ -33,8 +33,8 @@ func forEachFile(paths []string, f func(*config.Config)) { } // ForEachFileType passes configs read from next files: -// - `.yaml`; -// - `.json`. +// - `.yaml`; +// - `.json`. func ForEachFileType(pref string, f func(*config.Config)) { forEachFile([]string{ pref + ".yaml", diff --git a/pkg/innerring/processors/container/common.go b/pkg/innerring/processors/container/common.go index 89fc6dcb0f..2eb6f24bae 100644 --- a/pkg/innerring/processors/container/common.go +++ b/pkg/innerring/processors/container/common.go @@ -35,17 +35,17 @@ type signatureVerificationData struct { } // verifySignature is a common method of Container service authentication. Asserts that: -// - for trusted parties: session is valid (*) and issued by container owner -// - operation data is signed by container owner or trusted party -// - operation data signature is correct +// - for trusted parties: session is valid (*) and issued by container owner +// - operation data is signed by container owner or trusted party +// - operation data signature is correct // // (*) includes: -// - session token decodes correctly -// - signature is valid -// - session issued by the container owner -// - v.binPublicKey is a public session key -// - session context corresponds to the container and verb in v -// - session is "alive" +// - session token decodes correctly +// - signature is valid +// - session issued by the container owner +// - v.binPublicKey is a public session key +// - session context corresponds to the container and verb in v +// - session is "alive" func (cp *Processor) verifySignature(v signatureVerificationData) error { var err error var key neofsecdsa.PublicKeyRFC6979 diff --git a/pkg/innerring/processors/netmap/cleanup_table.go b/pkg/innerring/processors/netmap/cleanup_table.go index f7af9977d1..7bcd821f3e 100644 --- a/pkg/innerring/processors/netmap/cleanup_table.go +++ b/pkg/innerring/processors/netmap/cleanup_table.go @@ -70,9 +70,9 @@ func (c *cleanupTable) update(snapshot netmap.NetMap, now uint64) { // updates last access time of the netmap node by string public key. // // Returns true if at least one condition is met: -// * node hasn't been accessed yet; -// * remove flag is set; -// * binary node info has changed. +// - node hasn't been accessed yet; +// - remove flag is set; +// - binary node info has changed. func (c *cleanupTable) touch(keyString string, now uint64, binNodeInfo []byte) bool { c.Lock() defer c.Unlock() diff --git a/pkg/innerring/processors/netmap/nodevalidation/locode/calls.go b/pkg/innerring/processors/netmap/nodevalidation/locode/calls.go index 831792624b..8d78c1d965 100644 --- a/pkg/innerring/processors/netmap/nodevalidation/locode/calls.go +++ b/pkg/innerring/processors/netmap/nodevalidation/locode/calls.go @@ -21,12 +21,12 @@ var errMissingRequiredAttr = errors.New("missing required attribute in DB record // // New attributes are formed from the record of DB instance (Prm). // If DB entry R was found w/o errors, new attributes are: -// * CountryCode: R.CountryCode().String(); -// * Country: R.CountryName(); -// * Location: Record.LocationName(); -// * SubDivCode: R.SubDivCode(); -// * SubDiv: R.SubDivName(); -// * Continent: R.Continent().String(). +// - CountryCode: R.CountryCode().String(); +// - Country: R.CountryName(); +// - Location: Record.LocationName(); +// - SubDivCode: R.SubDivCode(); +// - SubDiv: R.SubDivName(); +// - Continent: R.Continent().String(). // // UN-LOCODE attribute remains untouched. func (v *Validator) VerifyAndUpdate(n *netmap.NodeInfo) error { diff --git a/pkg/innerring/processors/subnet/put.go b/pkg/innerring/processors/subnet/put.go index 1b7f4905b0..fb0565b6e8 100644 --- a/pkg/innerring/processors/subnet/put.go +++ b/pkg/innerring/processors/subnet/put.go @@ -37,9 +37,9 @@ var errDiffID = errors.New("diff subnet IDs") // All read errors of Put are forwarded. // // It returns an error on: -// * zero subnet creation; -// * empty ID or different from the one wired into info; -// * empty owner ID or different from the one wired into info. +// - zero subnet creation; +// - empty ID or different from the one wired into info; +// - empty owner ID or different from the one wired into info. func (x PutValidator) Assert(event Put) error { var err error diff --git a/pkg/innerring/subnet.go b/pkg/innerring/subnet.go index 0e49a25fa2..20d16e1a84 100644 --- a/pkg/innerring/subnet.go +++ b/pkg/innerring/subnet.go @@ -101,12 +101,12 @@ const ( // All handlers are executed only if the local node is an alphabet one. // // Events (notary): -// * put (parser: subnetevents.ParseNotaryPut, handler: catchSubnetCreation); -// * Delete (parser: subnetevents.ParseDelete, handler: catchSubnetCreation). +// - put (parser: subnetevents.ParseNotaryPut, handler: catchSubnetCreation); +// - Delete (parser: subnetevents.ParseDelete, handler: catchSubnetCreation). // // Events (non-notary): -// * Put (parser: subnetevents.ParsePut, handler: catchSubnetCreation); -// * Delete (parser: subnetevents.ParseDelete, handler: catchSubnetCreation). +// - Put (parser: subnetevents.ParsePut, handler: catchSubnetCreation); +// - Delete (parser: subnetevents.ParseDelete, handler: catchSubnetCreation). func (s *Server) listenSubnet() { if s.sideNotaryConfig.disabled { s.listenSubnetWithoutNotary() diff --git a/pkg/local_object_storage/engine/control.go b/pkg/local_object_storage/engine/control.go index 2698cb077d..2d8e4c049d 100644 --- a/pkg/local_object_storage/engine/control.go +++ b/pkg/local_object_storage/engine/control.go @@ -141,9 +141,9 @@ func (e *StorageEngine) execIfNotBlocked(op func() error) error { } // sets the flag of blocking execution of all data operations according to err: -// * err != nil, then blocks the execution. If exec wasn't blocked, calls close method +// - err != nil, then blocks the execution. If exec wasn't blocked, calls close method // (if err == errClosed => additionally releases pools and does not allow to resume executions). -// * otherwise, resumes execution. If exec was blocked, calls open method. +// - otherwise, resumes execution. If exec was blocked, calls open method. // // Can be called concurrently with exec. In this case it waits for all executions to complete. func (e *StorageEngine) setBlockExecErr(err error) error { diff --git a/pkg/local_object_storage/engine/inhume.go b/pkg/local_object_storage/engine/inhume.go index 890d476a69..35f4ef9843 100644 --- a/pkg/local_object_storage/engine/inhume.go +++ b/pkg/local_object_storage/engine/inhume.go @@ -110,10 +110,10 @@ func (e *StorageEngine) inhume(prm InhumePrm) (InhumeRes, error) { } // Returns: -// 0 - fail -// 1 - object locked -// 2 - lock object removal -// 3 - ok +// - 0: fail +// - 1: object locked +// - 2: lock object removal +// - 3: ok func (e *StorageEngine) inhumeAddr(addr oid.Address, prm shard.InhumePrm, checkExists bool) (status uint8) { root := false var errLocked apistatus.ObjectLocked diff --git a/pkg/local_object_storage/engine/lock.go b/pkg/local_object_storage/engine/lock.go index 1dbdd2d8c8..4709eccb25 100644 --- a/pkg/local_object_storage/engine/lock.go +++ b/pkg/local_object_storage/engine/lock.go @@ -43,9 +43,9 @@ func (e *StorageEngine) lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error } // Returns: -// 0 - fail -// 1 - locking irregular object -// 2 - ok +// - 0: fail +// - 1: locking irregular object +// - 2: ok func (e *StorageEngine) lockSingle(idCnr cid.ID, locker, locked oid.ID, checkExists bool) (status uint8) { // code is pretty similar to inhumeAddr, maybe unify? root := false diff --git a/pkg/local_object_storage/metabase/exists.go b/pkg/local_object_storage/metabase/exists.go index 893b8effa5..45fdf128e5 100644 --- a/pkg/local_object_storage/metabase/exists.go +++ b/pkg/local_object_storage/metabase/exists.go @@ -95,10 +95,10 @@ func (db *DB) exists(tx *bbolt.Tx, addr oid.Address, currEpoch uint64) (exists b } // objectStatus returns: -// * 0 if object is available; -// * 1 if object with GC mark; -// * 2 if object is covered with tombstone; -// * 3 if object is expired. +// - 0 if object is available; +// - 1 if object with GC mark; +// - 2 if object is covered with tombstone; +// - 3 if object is expired. func objectStatus(tx *bbolt.Tx, addr oid.Address, currEpoch uint64) uint8 { // we check only if the object is expired in the current // epoch since it is considered the only corner case: the diff --git a/pkg/local_object_storage/shard/shard.go b/pkg/local_object_storage/shard/shard.go index 0df64d4d1b..9bf0cefaa1 100644 --- a/pkg/local_object_storage/shard/shard.go +++ b/pkg/local_object_storage/shard/shard.go @@ -236,8 +236,8 @@ func WithRefillMetabase(v bool) Option { } // WithMode returns option to set shard's mode. Mode must be one of the predefined: -// - mode.ReadWrite; -// - mode.ReadOnly. +// - mode.ReadWrite; +// - mode.ReadOnly. func WithMode(v mode.Mode) Option { return func(c *cfg) { c.info.Mode = v diff --git a/pkg/local_object_storage/writecache/doc.go b/pkg/local_object_storage/writecache/doc.go index 90917500c5..555c7f1a3c 100644 --- a/pkg/local_object_storage/writecache/doc.go +++ b/pkg/local_object_storage/writecache/doc.go @@ -8,11 +8,11 @@ // 3. Main storage (blobstor). // // There are 2 types of background jobs: -// 1. Persisting objects from in-memory cache to database. -// 2. Flushing objects from database to blobstor. -// On flushing object address is put in in-memory LRU cache. -// The actual deletion from the DB is done when object -// is evicted from this cache. +// 1. Persisting objects from in-memory cache to database. +// 2. Flushing objects from database to blobstor. +// On flushing object address is put in in-memory LRU cache. +// The actual deletion from the DB is done when object +// is evicted from this cache. // // Putting objects to the main storage is done by multiple workers. // Some of them prioritize flushing items, others prioritize putting new objects. diff --git a/pkg/morph/client/constructor.go b/pkg/morph/client/constructor.go index 8ef6f99454..34dc04ca43 100644 --- a/pkg/morph/client/constructor.go +++ b/pkg/morph/client/constructor.go @@ -67,12 +67,12 @@ func defaultConfig() *cfg { // If private key is nil, it panics. // // Other values are set according to provided options, or by default: -// * client context: Background; -// * dial timeout: 5s; -// * blockchain network type: netmode.PrivNet; -// * signer with the global scope; -// * wait interval: 500ms; -// * logger: zap.L(). +// - client context: Background; +// - dial timeout: 5s; +// - blockchain network type: netmode.PrivNet; +// - signer with the global scope; +// - wait interval: 500ms; +// - logger: zap.L(). // // If desired option satisfies the default value, it can be omitted. // If multiple options of the same config value are supplied, diff --git a/pkg/morph/client/notary.go b/pkg/morph/client/notary.go index 96a076e15c..28da086021 100644 --- a/pkg/morph/client/notary.go +++ b/pkg/morph/client/notary.go @@ -820,11 +820,13 @@ func alreadyOnChainError(err error) bool { // CalculateNotaryDepositAmount calculates notary deposit amount // using the rule: -// IF notaryBalance < gasBalance * gasMul { -// DEPOSIT gasBalance / gasDiv -// } ELSE { -// DEPOSIT 1 -// } +// +// IF notaryBalance < gasBalance * gasMul { +// DEPOSIT gasBalance / gasDiv +// } ELSE { +// DEPOSIT 1 +// } +// // gasMul and gasDiv must be positive. func CalculateNotaryDepositAmount(c *Client, gasMul, gasDiv int64) (fixedn.Fixed8, error) { notaryBalance, err := c.GetNotaryDeposit() diff --git a/pkg/morph/client/static.go b/pkg/morph/client/static.go index 856f3d5b9a..5787b0a63e 100644 --- a/pkg/morph/client/static.go +++ b/pkg/morph/client/static.go @@ -108,8 +108,8 @@ func (i *InvokePrmOptional) SetHash(hash util.Uint256) { // Supported args types are the same as in Client. // // If TryNotary is provided: -// - if AsAlphabet is provided, calls NotaryInvoke; -// - otherwise, calls NotaryInvokeNotAlpha. +// - if AsAlphabet is provided, calls NotaryInvoke; +// - otherwise, calls NotaryInvokeNotAlpha. // // If fee for the operation executed using specified method is customized, then StaticClient uses it. // Otherwise, default fee is used. diff --git a/pkg/network/validation.go b/pkg/network/validation.go index 061baf247c..6075deb24c 100644 --- a/pkg/network/validation.go +++ b/pkg/network/validation.go @@ -52,11 +52,9 @@ func (x NodeEndpointsIterator) NumberOfAddresses() int { // // Correct composition(and order from low to high level) // of protocols: -// -// 1. dns4/ip4/ip6 -// 2. tcp -// 3. tls(optional, may be absent) -// +// 1. dns4/ip4/ip6 +// 2. tcp +// 3. tls(optional, may be absent) func VerifyMultiAddress(ni netmap.NodeInfo) error { return iterateParsedAddresses(NodeEndpointsIterator(ni), checkProtocols) } diff --git a/pkg/services/control/ir/server/server.go b/pkg/services/control/ir/server/server.go index f0bfddf867..a232187a47 100644 --- a/pkg/services/control/ir/server/server.go +++ b/pkg/services/control/ir/server/server.go @@ -23,8 +23,8 @@ func panicOnPrmValue(n string, v interface{}) { // New creates a new instance of the Server. // // Panics if: -// - parameterized private key is nil; -// - parameterized HealthChecker is nil. +// - parameterized private key is nil; +// - parameterized HealthChecker is nil. // // Forms white list from all keys specified via // WithAllowedKeys option and a public key of diff --git a/pkg/services/control/types.pb.go b/pkg/services/control/types.pb.go index 4c3d3c9ca7..717f77b126 100644 --- a/pkg/services/control/types.pb.go +++ b/pkg/services/control/types.pb.go @@ -504,31 +504,31 @@ func (x *ShardInfo) GetPiloramaPath() string { // Storage Nodes in the network and used implicitly with default values if not // explicitly set: // -// * Capacity \ -// Total available disk space in Gigabytes. -// * Price \ -// Price in GAS tokens for storing one GB of data during one Epoch. In node -// attributes it's a string presenting floating point number with comma or -// point delimiter for decimal part. In the Network Map it will be saved as -// 64-bit unsigned integer representing number of minimal token fractions. -// * Subnet \ -// String ID of Node's storage subnet. There can be only one subnet served -// by the Storage Node. -// * Locode \ -// Node's geographic location in -// [UN/LOCODE](https://www.unece.org/cefact/codesfortrade/codes_index.html) -// format approximated to the nearest point defined in standard. -// * Country \ -// Country code in -// [ISO 3166-1_alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) -// format. Calculated automatically from `Locode` attribute -// * Region \ -// Country's administative subdivision where node is located. Calculated -// automatically from `Locode` attribute based on `SubDiv` field. Presented -// in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format. -// * City \ -// City, town, village or rural area name where node is located written -// without diacritics . Calculated automatically from `Locode` attribute. +// - Capacity \ +// Total available disk space in Gigabytes. +// - Price \ +// Price in GAS tokens for storing one GB of data during one Epoch. In node +// attributes it's a string presenting floating point number with comma or +// point delimiter for decimal part. In the Network Map it will be saved as +// 64-bit unsigned integer representing number of minimal token fractions. +// - Subnet \ +// String ID of Node's storage subnet. There can be only one subnet served +// by the Storage Node. +// - Locode \ +// Node's geographic location in +// [UN/LOCODE](https://www.unece.org/cefact/codesfortrade/codes_index.html) +// format approximated to the nearest point defined in standard. +// - Country \ +// Country code in +// [ISO 3166-1_alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) +// format. Calculated automatically from `Locode` attribute +// - Region \ +// Country's administative subdivision where node is located. Calculated +// automatically from `Locode` attribute based on `SubDiv` field. Presented +// in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format. +// - City \ +// City, town, village or rural area name where node is located written +// without diacritics . Calculated automatically from `Locode` attribute. // // For detailed description of each well-known attribute please see the // corresponding section in NeoFS Technical specification. diff --git a/pkg/services/object/internal/client/client.go b/pkg/services/object/internal/client/client.go index 091b3ac897..87bc997944 100644 --- a/pkg/services/object/internal/client/client.go +++ b/pkg/services/object/internal/client/client.go @@ -129,8 +129,8 @@ func (x GetObjectRes) Object() *object.Object { // // Returns any error which prevented the operation from completing correctly in error return. // Returns: -// error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; -// error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. +// - error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; +// - error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. func GetObject(prm GetObjectPrm) (*GetObjectRes, error) { if prm.tokenSession != nil { prm.cliPrm.WithinSession(*prm.tokenSession) @@ -219,8 +219,9 @@ func (x HeadObjectRes) Header() *object.Object { // // Returns any error which prevented the operation from completing correctly in error return. // Returns: -// error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; -// error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. +// +// error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; +// error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. func HeadObject(prm HeadObjectPrm) (*HeadObjectRes, error) { if prm.local { prm.cliPrm.MarkLocal() @@ -305,8 +306,9 @@ func (x PayloadRangeRes) PayloadRange() []byte { // // Returns any error which prevented the operation from completing correctly in error return. // Returns: -// error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; -// error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. +// +// error of type *object.SplitInfoError if object raw flag is set and requested object is virtual; +// error of type *apistatus.ObjectAlreadyRemoved if the requested object is marked to be removed. func PayloadRange(prm PayloadRangePrm) (*PayloadRangeRes, error) { if prm.local { prm.cliPrm.MarkLocal() diff --git a/pkg/services/object_manager/tombstone/checker.go b/pkg/services/object_manager/tombstone/checker.go index de59dc0056..8cf944e91a 100644 --- a/pkg/services/object_manager/tombstone/checker.go +++ b/pkg/services/object_manager/tombstone/checker.go @@ -39,8 +39,8 @@ type ExpirationChecker struct { // IsTombstoneAvailable checks the tombstone presence in the system in the // following order: -// * 1. Local LRU cache; -// * 2. Tombstone source. +// - 1. Local LRU cache; +// - 2. Tombstone source. // // If a tombstone was successfully fetched (regardless of its expiration) // it is cached in the LRU cache. diff --git a/pkg/services/reputation/eigentrust/controller/controller.go b/pkg/services/reputation/eigentrust/controller/controller.go index 956286fa04..a94b030154 100644 --- a/pkg/services/reputation/eigentrust/controller/controller.go +++ b/pkg/services/reputation/eigentrust/controller/controller.go @@ -30,8 +30,8 @@ type Prm struct { // // Controller's main goal is to separate the two main stages of // the calculation: -// 1.reporting local values to manager nodes -// 2.calculating global trusts of child nodes +// 1. reporting local values to manager nodes +// 2. calculating global trusts of child nodes // // Calculation stages are controlled based on external signals // that come from the application through the Controller's API. diff --git a/pkg/services/util/sign.go b/pkg/services/util/sign.go index 22ac44349b..5a59ac6e6a 100644 --- a/pkg/services/util/sign.go +++ b/pkg/services/util/sign.go @@ -231,8 +231,8 @@ func setStatusV2(resp ResponseMessage, err error) { // signs response with private key via signature.SignServiceMessage. // The signature error affects the result depending on the protocol version: -// * if status return is supported, panics since we cannot return the failed status, because it will not be signed; -// * otherwise, returns error in order to transport it directly. +// - if status return is supported, panics since we cannot return the failed status, because it will not be signed; +// - otherwise, returns error in order to transport it directly. func signResponse(key *ecdsa.PrivateKey, resp interface{}, statusSupported bool) error { err := signature.SignServiceMessage(key, resp) if err != nil { diff --git a/pkg/util/http/server.go b/pkg/util/http/server.go index 7c436c2c5b..cbfbda7392 100644 --- a/pkg/util/http/server.go +++ b/pkg/util/http/server.go @@ -54,7 +54,7 @@ func panicOnValue(t, n string, v interface{}) { // Panics if at least one value of the parameters is invalid. // // Panics if at least one of next optional parameters is invalid: -// * shutdown timeout is non-positive. +// - shutdown timeout is non-positive. // // The created Server does not require additional // initialization and is completely ready for work. diff --git a/pkg/util/logger/logger.go b/pkg/util/logger/logger.go index 8fa66da26f..365b42bdd4 100644 --- a/pkg/util/logger/logger.go +++ b/pkg/util/logger/logger.go @@ -34,9 +34,9 @@ func (p *Prm) SetLevelString(s string) error { // NewLogger constructs a new zap logger instance. // // Logger is built from production logging configuration with: -// * parameterized level; -// * console encoding; -// * ISO8601 time encoding. +// - parameterized level; +// - console encoding; +// - ISO8601 time encoding. // // Logger records a stack trace for all messages at or above fatal level. func NewLogger(prm Prm) (*Logger, error) {