a
1a96beea25
merge?
2022-12-28 03:30:30 -06:00
Mario Cormier
89617ff99b
Adding Event.Type(...) method to log the type of an object ( #437 )
...
Co-authored-by: Mario Cormier <mcormier@rossvideo.com>
2022-10-18 02:51:54 +02:00
lazarenkovegor
4c85986254
Unixnano time format support ( #454 )
...
Co-authored-by: Лазаренков Егор Алексеевич <ealazarenkov@sberbank.ru>
2022-07-18 17:25:16 +01:00
elee
c7d28c47c7
change log
2022-03-20 14:19:42 -05:00
nichady
c0c2e11fc3
Consistent casing, redundancy, and spelling/grammar ( #391 )
...
* fix casing
* remove redundant type conversions
* remove unnecessary append
x = append(y) is equivalent to x = y
* fix grammar and spelling
* rename file to enforce consistent casing with other READMEs in this repo
2021-12-21 13:07:54 +01:00
Matas
6f8a5f9ccb
Add Stringers support ( #360 )
2021-09-18 19:22:21 +02:00
povsister
47a03bc5eb
Add ability to customize internal json marshaler ( #318 )
...
Added a package level variable "InterfaceMarshalFunc".
It's used to marshal interface to JSON encoded byte slice,
mostly when event.Interface("key", v) is called.
2021-05-20 14:46:36 +02:00
Dionisio Romero Díaz
9336c4d0ed
Fix AppendFloats64 first element as 32 ( #263 )
2020-10-27 17:05:59 +01:00
Eugene
14dcf38e7d
Make AppendKey in json inlinable ( #226 )
...
This change increase performance by inlining this frequently called function
Benchmark:
| name | old time/op | new time/op | delta | params |
|---|---|---|---|---|
| LogEmpty-8 | 14.1ns ±10% | 15.6ns ±13% | +10.43% | (p=0.003 n=10+10) |
| Disabled-8 | 1.27ns ± 0% | 1.35ns ± 1% | +6.54% | (p=0.000 n=9+10) |
| Info-8 | 39.8ns ± 5% | 37.9ns ± 2% | -4.55% | (p=0.000 n=10+10) |
| ContextFields-8 | 42.2ns ± 4% | 39.7ns ± 3% | -6.04% | (p=0.000 n=10+10) |
| ContextAppend-8 | 15.3ns ± 0% | 14.5ns ± 0% | -5.23% | (p=0.000 n=9+10) |
| LogFields-8 | 179ns ± 0% | 176ns ± 1% | -1.23% | (p=0.000 n=10+10) |
| LogArrayObject-8 | 526ns ± 1% | 491ns ± 1% | -6.65% | (p=0.000 n=9+10) |
| LogFieldType/Bools-8 | 34.5ns ± 2% | 33.3ns ± 4% | -3.63% | (p=0.000 n=9+10) |
| LogFieldType/Int-8 | 29.7ns ± 4% | 28.3ns ± 6% | -4.71% | (p=0.003 n=10+10) |
| LogFieldType/Str-8 | 29.6ns ± 3% | 27.1ns ± 2% | -8.19% | (p=0.000 n=10+10) |
| LogFieldType/Time-8 | 119ns ± 0% | 118ns ± 0% | -0.84% | (p=0.000 n=9+9) |
| LogFieldType/Interfaces-8 | 504ns ± 1% | 516ns ± 1% | +2.46% | (p=0.000 n=10+10) |
| LogFieldType/Object-8 | 73.7ns ± 2% | 71.6ns ± 1% | -2.94% | (p=0.000 n=10+10) |
| LogFieldType/Bool-8 | 28.9ns ± 6% | 25.9ns ± 3% | -10.35% | (p=0.000 n=9+10) |
| LogFieldType/Strs-8 | 53.7ns ± 2% | 51.6ns ± 1% | -3.95% | (p=0.000 n=9+10) |
| LogFieldType/Err-8 | 39.2ns ± 2% | 38.1ns ± 4% | -2.66% | (p=0.006 n=10+10) |
| LogFieldType/Interface-8 | 147ns ± 1% | 145ns ± 1% | -1.22% | (p=0.001 n=10+10) |
| LogFieldType/Interface(Object)-8 | 78.8ns ± 1% | 76.9ns ± 1% | -2.43% | (p=0.000 n=10+10) |
| LogFieldType/Interface(Objects)-8 | 516ns ± 0% | 507ns ± 1% | -1.66% | (p=0.000 n=8+10) |
| LogFieldType/Ints-8 | 52.4ns ± 1% | 48.1ns ± 1% | -8.28% | (p=0.000 n=10+10) |
| LogFieldType/Float-8 | 39.8ns ± 1% | 38.4ns ± 2% | -3.33% | (p=0.000 n=10+9) |
| LogFieldType/Times-8 | 887ns ± 0% | 887ns ± 0% | ~ | (p=0.164 n=8+10) |
| LogFieldType/Dur-8 | 41.1ns ± 2% | 40.2ns ± 6% | -2.10% | (p=0.014 n=10+10) |
| LogFieldType/Durs-8 | 266ns ± 0% | 262ns ± 0% | -1.35% | (p=0.000 n=7+10) |
| LogFieldType/Floats-8 | 166ns ± 0% | 165ns ± 1% | ~ | (p=0.238 n=10+10) |
| LogFieldType/Errs-8 | 126ns ± 1% | 120ns ± 2% | -4.61% | (p=0.000 n=10+10) |
| ContextFieldType/Bool-8 | 140ns ± 2% | 140ns ± 2% | ~ | (p=0.701 n=10+9) |
| ContextFieldType/Err-8 | 150ns ± 3% | 150ns ± 2% | ~ | (p=0.932 n=10+10) |
| ContextFieldType/Interfaces-8 | 631ns ± 1% | 628ns ± 1% | ~ | (p=0.108 n=10+10) |
| ContextFieldType/Floats-8 | 263ns ± 1% | 257ns ± 1% | -2.05% | (p=0.000 n=10+10) |
| ContextFieldType/Errs-8 | 205ns ± 2% | 204ns ± 2% | ~ | (p=0.499 n=10+9) |
| ContextFieldType/Dur-8 | 146ns ± 3% | 149ns ± 2% | +1.86% | (p=0.011 n=9+10) |
| ContextFieldType/Durs-8 | 372ns ± 1% | 367ns ± 1% | -1.24% | (p=0.000 n=10+10) |
| ContextFieldType/Bools-8 | 145ns ± 2% | 144ns ± 3% | ~ | (p=0.447 n=10+10) |
| ContextFieldType/Ints-8 | 157ns ± 3% | 157ns ± 2% | ~ | (p=0.976 n=9+9) |
| ContextFieldType/Float-8 | 147ns ± 3% | 148ns ± 4% | ~ | (p=0.385 n=9+10) |
| ContextFieldType/Strs-8 | 158ns ± 3% | 157ns ± 2% | ~ | (p=0.666 n=10+10) |
| ContextFieldType/Time-8 | 143ns ± 2% | 141ns ± 3% | -1.75% | (p=0.035 n=10+10) |
| ContextFieldType/Times-8 | 159ns ± 4% | 159ns ± 2% | ~ | (p=0.978 n=10+10) |
| ContextFieldType/Interface(Object)-8 | 252ns ± 2% | 251ns ± 2% | ~ | (p=0.415 n=10+10) |
| ContextFieldType/Timestamp-8 | 167ns ± 2% | 167ns ± 3% | ~ | (p=0.662 n=10+10) |
| ContextFieldType/Int-8 | 142ns ± 4% | 140ns ± 2% | -2.04% | (p=0.026 n=10+10) |
| ContextFieldType/Str-8 | 142ns ± 1% | 141ns ± 3% | -1.00% | (p=0.016 n=9+10) |
| ContextFieldType/Interface-8 | 253ns ± 1% | 249ns ± 3% | ~ | (p=0.055 n=9+10) |
| ContextFieldType/Interface(Objects)-8 | 632ns ± 1% | 624ns ± 1% | -1.20% | (p=0.000 n=10+9) |
| ContextFieldType/Object-8 | 194ns ± 2% | 192ns ± 2% | ~ | (p=0.083 n=10+10) |
| Hooks/Nop/Single-8 | 16.5ns ± 6% | 15.5ns ± 5% | -5.95% | (p=0.001 n=10+10) |
| Hooks/Nop/Multi-8 | 18.5ns ± 6% | 17.8ns ± 4% | -3.66% | (p=0.009 n=10+9) |
| Hooks/Simple-8 | 31.0ns ± 2% | 28.1ns ± 2% | -9.24% | (p=0.000 n=8+9) |
| Samplers/BasicSampler_1-8 | 0.65ns ± 1% | 0.63ns ± 1% | -1.78% | (p=0.000 n=10+9) |
| Samplers/BasicSampler_5-8 | 30.0ns ± 1% | 32.2ns ± 0% | +7.29% | (p=0.000 n=10+9) |
| Samplers/RandomSampler-8 | 92.8ns ± 1% | 90.8ns ± 1% | -2.25% | (p=0.000 n=10+10) |
| Samplers/BurstSampler-8 | 34.5ns ± 1% | 36.6ns ± 1% | +5.95% | (p=0.000 n=9+9) |
| Samplers/BurstSamplerNext-8 | 46.3ns ± 0% | 46.1ns ± 0% | -0.41% | (p=0.001 n=9+7) |
| ConsoleWriter-8 | 5.90µs ± 0% | 5.84µs ± 1% | -0.91% | (p=0.000 n=10+10) |
2020-05-05 19:44:34 -07:00
hazimj
19e454b4c7
Add Unix time format for microseconds ( #188 )
2019-10-09 20:35:32 -07:00
IxDay
9938a23cba
Fix JSON when object is first to be pushed ( #154 )
...
When pushing an object to the logger, and this object was the first
field added. Zerolog was outputting an invalid json blob, issuing an
extra comma before the object. This patch ensure that JSON is still valid
even if an object is pushed first to the logger.
Fixes #152
2019-06-04 23:48:09 -07:00
Olivier Poitrey
3e85c4b21c
Add a new time format for UNIX timestamp in milliseconds
2019-04-19 15:48:31 -07:00
Dušan Kasan
1c6d99b455
Add custom error serialization support and provide sane defaults ( #78 )
...
As per https://github.com/rs/zerolog/issues/9 and to offer a different approach from https://github.com/rs/zerolog/pull/11 and https://github.com/rs/zerolog/pull/35 this PR introduces custom error serialization with sane defaults without breaking the existing APIs.
This is just a first draft and is missing tests. Also, a bit of code duplication which I feel could be reduced but it serves to get the idea across.
It provides global error marshalling by exposing a `var ErrorMarshalFunc func(error) interface{}` in zerolog package that by default is a function that returns the passed argument. It should be overriden if you require custom error marshalling.
Then in every function that accept error or array of errors `ErrorMarshalFunc` is called on the error and then the result of it is processed like this:
- if it implements `LogObjectMarshaler`, serialize it as an object
- if it is a string serialize as a string
- if it is an error, serialize as a string with the result of `Error()`
- else serialize it as an interface
The side effect of this change is that the encoders don't need the `AppendError/s` methods anymore, as the errors are serialized directly to other types.
2018-07-02 12:46:01 -07:00
Olivier Poitrey
ea1184be2b
Get back some ns by removing the extra inferance added by binary support
...
benchstat old new
name old time/op new time/op delta
LogEmpty-8 15.2ns ±14% 13.4ns ± 3% -12.11% (p=0.008 n=5+5)
Disabled-8 2.50ns ± 1% 2.28ns ± 6% -8.81% (p=0.008 n=5+5)
Info-8 44.4ns ± 1% 36.4ns ± 4% -17.99% (p=0.008 n=5+5)
ContextFields-8 47.6ns ± 1% 39.4ns ± 7% -17.30% (p=0.008 n=5+5)
ContextAppend-8 18.9ns ± 4% 15.2ns ± 4% -19.68% (p=0.008 n=5+5)
LogFields-8 181ns ± 2% 173ns ± 2% -4.63% (p=0.008 n=5+5)
LogArrayObject-8 530ns ± 3% 487ns ± 3% -8.11% (p=0.008 n=5+5)
LogFieldType/Int-8 29.5ns ± 3% 28.8ns ± 2% ~ (p=0.167 n=5+5)
LogFieldType/Interface-8 180ns ± 7% 175ns ± 4% ~ (p=0.579 n=5+5)
LogFieldType/Interface(Object)-8 87.8ns ± 3% 80.5ns ± 1% -8.29% (p=0.008 n=5+5)
LogFieldType/Object-8 83.7ns ± 2% 77.2ns ± 3% -7.76% (p=0.008 n=5+5)
LogFieldType/Bools-8 34.6ns ± 3% 32.3ns ± 6% -6.64% (p=0.032 n=5+5)
LogFieldType/Float-8 43.0ns ± 4% 40.5ns ± 4% -5.86% (p=0.016 n=5+5)
LogFieldType/Str-8 29.8ns ± 2% 26.5ns ± 5% -11.01% (p=0.008 n=5+5)
LogFieldType/Err-8 32.8ns ± 2% 29.8ns ± 4% -9.21% (p=0.008 n=5+5)
LogFieldType/Durs-8 309ns ± 3% 304ns ± 3% ~ (p=0.238 n=5+5)
LogFieldType/Floats-8 175ns ± 2% 174ns ± 3% ~ (p=0.968 n=5+5)
LogFieldType/Strs-8 51.0ns ± 3% 48.4ns ± 6% -5.06% (p=0.032 n=5+5)
LogFieldType/Dur-8 44.5ns ± 3% 41.3ns ± 3% -7.11% (p=0.008 n=5+5)
LogFieldType/Interface(Objects)-8 758ns ± 3% 760ns ± 6% ~ (p=1.000 n=5+5)
LogFieldType/Interfaces-8 772ns ± 5% 762ns ± 4% ~ (p=0.794 n=5+5)
LogFieldType/Bool-8 28.0ns ± 6% 26.5ns ± 9% ~ (p=0.143 n=5+5)
LogFieldType/Ints-8 49.6ns ± 2% 46.2ns ± 2% -6.70% (p=0.008 n=5+5)
LogFieldType/Errs-8 46.5ns ±11% 40.9ns ± 4% -11.92% (p=0.008 n=5+5)
LogFieldType/Time-8 115ns ± 3% 113ns ± 3% ~ (p=0.167 n=5+5)
LogFieldType/Times-8 810ns ± 1% 811ns ± 3% ~ (p=0.889 n=5+5)
ContextFieldType/Errs-8 158ns ± 6% 156ns ±12% ~ (p=1.000 n=5+5)
ContextFieldType/Times-8 165ns ±11% 173ns ± 9% ~ (p=0.651 n=5+5)
ContextFieldType/Interface-8 289ns ±13% 287ns ±11% ~ (p=0.690 n=5+5)
ContextFieldType/Interface(Object)-8 285ns ±12% 297ns ± 6% ~ (p=0.238 n=5+5)
ContextFieldType/Interface(Objects)-8 941ns ± 6% 941ns ± 5% ~ (p=1.000 n=5+5)
ContextFieldType/Object-8 201ns ± 5% 210ns ±12% ~ (p=0.262 n=5+5)
ContextFieldType/Ints-8 173ns ±10% 165ns ± 9% ~ (p=0.198 n=5+5)
ContextFieldType/Floats-8 297ns ± 6% 292ns ± 7% ~ (p=0.579 n=5+5)
ContextFieldType/Timestamp-8 174ns ± 9% 174ns ±11% ~ (p=0.810 n=5+5)
ContextFieldType/Durs-8 445ns ± 9% 425ns ± 3% ~ (p=0.151 n=5+5)
ContextFieldType/Interfaces-8 944ns ± 6% 876ns ±10% ~ (p=0.095 n=5+5)
ContextFieldType/Strs-8 179ns ±11% 165ns ±13% ~ (p=0.135 n=5+5)
ContextFieldType/Dur-8 158ns ± 8% 160ns ±19% ~ (p=1.000 n=5+5)
ContextFieldType/Time-8 152ns ±15% 148ns ±14% ~ (p=0.952 n=5+5)
ContextFieldType/Str-8 146ns ±12% 147ns ±16% ~ (p=0.841 n=5+5)
ContextFieldType/Err-8 138ns ±12% 145ns ±17% ~ (p=0.595 n=5+5)
ContextFieldType/Int-8 145ns ±10% 146ns ±13% ~ (p=0.873 n=5+5)
ContextFieldType/Float-8 181ns ± 9% 162ns ±12% ~ (p=0.151 n=5+5)
ContextFieldType/Bool-8 153ns ±10% 131ns ±19% ~ (p=0.063 n=5+5)
ContextFieldType/Bools-8 149ns ±11% 160ns ±16% ~ (p=0.500 n=5+5)
2018-05-10 15:01:41 -07:00
Olivier Poitrey
79281e4bf6
Fix Event.Times when format is set to UNIX time
2018-05-09 03:52:30 -07:00
Ravi Raju
2ccfab3e07
Support for adding IP Address/Prefix + stream based decoder ( #49 )
...
* added IPAddr, IPPrefix and stream based cbor decoder
* Update README with cbor decoder tool info
* Update README in cbor with comparison data
2018-04-03 23:07:18 +02:00
Ravi Raju
ddfae1b613
Binary format support ( #37 )
...
Adds support for binary logging (with cbor encoding) in addition to JSON. Use the binary_log compile tag to enable the feature.
2018-03-28 11:49:41 -07:00
Olivier Poitrey
24cc441b11
Add more json type tests
2018-03-23 09:58:31 -07:00
Olivier Poitrey
4ea03de40d
Optimize JSON string encoding using a lookup table
...
benchstat old new
name old time/op new time/op delta
AppendString/MultiBytesFirst-8 77.9ns ± 5% 70.2ns ± 1% -9.88% (p=0.008 n=5+5)
AppendString/MultiBytesMiddle-8 64.2ns ± 1% 56.3ns ± 5% -12.19% (p=0.008 n=5+5)
AppendString/MultiBytesLast-8 51.2ns ± 2% 45.2ns ± 4% -11.65% (p=0.008 n=5+5)
AppendString/NoEncoding-8 36.2ns ± 4% 34.0ns ± 6% ~ (p=0.087 n=5+5)
AppendString/EncodingFirst-8 67.7ns ± 2% 59.4ns ± 2% -12.26% (p=0.008 n=5+5)
AppendString/EncodingMiddle-8 56.5ns ± 2% 50.6ns ± 5% -10.54% (p=0.008 n=5+5)
AppendString/EncodingLast-8 41.3ns ± 1% 39.6ns ± 5% -4.11% (p=0.024 n=5+5)
AppendBytes/MultiBytesLast-8 53.5ns ± 6% 45.6ns ± 4% -14.79% (p=0.008 n=5+5)
AppendBytes/NoEncoding-8 36.3ns ± 3% 28.6ns ± 3% -21.10% (p=0.008 n=5+5)
AppendBytes/EncodingFirst-8 67.3ns ± 4% 62.1ns ± 4% -7.75% (p=0.008 n=5+5)
AppendBytes/EncodingMiddle-8 59.2ns ± 7% 51.0ns ± 6% -13.85% (p=0.008 n=5+5)
AppendBytes/EncodingLast-8 43.7ns ± 6% 34.4ns ± 2% -21.32% (p=0.008 n=5+5)
AppendBytes/MultiBytesFirst-8 77.7ns ± 2% 71.2ns ± 3% -8.37% (p=0.008 n=5+5)
AppendBytes/MultiBytesMiddle-8 63.6ns ± 3% 57.8ns ± 5% -9.12% (p=0.008 n=5+5)
2018-03-23 04:24:50 -07:00
Max Wolter
1c575db928
Add support for hex-encoded of byte slice ( #42 )
2018-03-15 10:29:26 -07:00
Olivier Poitrey
6cdd9977c4
Refactor JSON encoding code
2017-07-25 22:05:32 -07:00