Commit Graph

55 Commits

Author SHA1 Message Date
Michael Haines eeb653535c Lock mutex before formatting to avoid race 2018-02-05 12:44:11 -07:00
Maurício Linhares 977e03308a
Fix deadlock on panics at Entry.log
When calling Entry.log a panic inside some of the
locking blocks could cause the whole logger to deadlock.

One of the ways this could happen is for a hook to cause
a panic, when this happens the lock is never unlocked and
the library deadlocks, causing the code that is calling
it to deadlock as well.

This changes how locking happens with unlocks at defer
blocks so even if a panic happens somewhere along the log
call the library will still unlock and continue to function.
2018-01-22 10:52:46 -05:00
Aditya Mukerjee c830992a61 Take lock on mutex when firing hooks 2017-08-17 15:22:06 +01:00
DmitriyMV 95002bc717 Improve logrus.Entry.Level documentation 2017-07-14 15:04:50 +03:00
DmitriyMV 3bcb09397d This commit fixes data race using atomics. We switch type of level from uint8 to uint32 but due memory alignment on most platforms it will not result in any additional memory. 2017-03-23 19:13:49 +03:00
plan 69df0d2ed7 Use Buffer pool to allocate bytes.Buffer for formatter
Entry.Reader() seams not necessary, removed
2016-08-11 01:35:34 +08:00
Aaron Greenlee a7755c5c03 Enhanced fatal calls so exit handlers can be invoked
While GO offers the ability to recover from panic there is no way to intercept an os.Exit event. To allow graceful shutdown and clean-up or programs which use Logrus to Fatal out I've borrowed ideas from the `atexit` package and enhanced Logrus.

Usage:
* When setting up the logger one call `RegisterExitHandler( func() {...} )` to add a handler that will be invoked for any `Fatal` call to the logger.
2016-06-24 10:23:56 -04:00
Dimitrij Denissenko b81f34e70a Avoid re-allocations 2016-03-15 07:39:40 +00:00
Antoine Grondin 38c9fd2510 Revert "Implement casting of *Entry to error."
This reverts commit 756db3cd2d.
2015-09-07 20:47:46 -04:00
Antoine Grondin c639bedcac Merge pull request #179 from yawn/with-error
Added WithError(err)
2015-09-06 01:34:49 -04:00
Marcos Lilljedahl 8280b8b9a6 Add comment to log function
Signed-off-by: Marcos Lilljedahl <marcosnils@gmail.com>
2015-08-07 18:29:20 -03:00
Marcos Lilljedahl 35f12fb760 Fix panic return type
Signed-off-by: Marcos Lilljedahl <marcosnils@gmail.com>
2015-08-06 21:19:22 -03:00
Marcos Lilljedahl 396f8eefaa Make log method receive a copy of Entry structure to avoid race
conditions

Fixes #216

Signed-off-by: Marcos Lilljedahl <marcosnils@gmail.com>
2015-08-06 21:01:47 -03:00
Simon Eskildsen aa3ad346e4 Revert "Merge pull request #208 from Arkan/master"
This reverts commit 7eac5879a5, reversing
changes made to c79ccaf8c2.
2015-07-23 21:45:57 -04:00
Arkan 0be4ee004c Fix Entry log level 2015-07-06 22:27:39 +02:00
Madhav Puri c0ea7891cd Fix Fatalf() and Fatalln() to exit irrespective of log level
Signed-off-by: Madhav Puri <madhav.puri@gmail.com>
2015-05-26 14:01:33 -07:00
Joern Barthel 756db3cd2d Implement casting of *Entry to error. 2015-05-19 20:20:59 +02:00
Joern Barthel e3e5de11c4 Implement WithError(err) in exported, fixed doco. 2015-05-19 19:50:55 +02:00
Joern Barthel c24d0555d7 Added WithError(err). 2015-05-13 13:35:03 +02:00
Patrick Hemmer e2dff63faa Add missing `(*Entry) Warning()` function 2015-01-12 17:20:11 -05:00
Dan Buch 9836f1ba0e Adding tests for PanicLevel behavior, plus changing behavior! 🙀 2014-11-05 20:39:35 -05:00
Dan Buch f302a46d2a Switching to io.MultiWriter for clarity 2014-11-05 14:07:40 -05:00
Dan Buch ced531341e Saving off entry string for use in panic
as the reader is not seekable and without this the panic string is
always empty 🙀
2014-11-05 13:49:58 -05:00
Antoine Grondin 938dffa0e0 hooks: lock on the logger before printing to stderr, printf args 2014-10-21 19:26:29 -04:00
Markus Zimmermann 5573f97efc fix some typos 2014-10-16 14:43:18 +02:00
Simon Eskildsen 3b5af9a6dc entry: add comment to panic comparison in log() 2014-09-25 03:08:26 +00:00
Simon Eskildsen 51ca046ebf Merge pull request #65 from pquerna/remove_unused_string
Only convert []bytes into a String() when needed for a panic
2014-09-24 23:06:38 -04:00
Paul Querna f96066e3bf Only convert []bytes into a String() when needed for a panic, and not on other log levels 2014-09-23 17:05:07 -07:00
Antoine Grondin c4cc714937 fix duplication of msg/time/level keys, add benchmarks. 2014-09-16 20:19:42 -04:00
Antoine Grondin d35b1c983e text-formatter: assume that IsTerminal doesn't change during execution 2014-09-16 17:19:03 -04:00
Simon Eskildsen cfddc66325 entry: document entry and methods 2014-07-26 21:37:06 -04:00
Simon Eskildsen 40069a98d6 entry: break out time, level and message from data 2014-07-26 21:34:29 -04:00
Simon Eskildsen f0cb18fc85 entry: use level string helper 2014-07-26 21:03:20 -04:00
Antoine Grondin e5621dca87 Export package func to a standard logger. 2014-07-21 21:19:55 -04:00
Shuhao Wu 7a3a90cb3d Added test 2014-06-09 11:54:10 -04:00
Shuhao Wu 511792f912 Added support to chain withfields
`WithField` and `WithFields` right now doesn't chain properly. Meaning
that if you do something like:

    localLog := logger.WithField("tag", "value")
    localLog.WithField("v1", "value").Info("message1")
    localLog.Info("message2")

The `v1` will be carried over to `message2`.

With this patch, each WithField/WithFields call are isolated.
2014-06-09 11:32:20 -04:00
Simon Eskildsen 13600d2325 text_formatter: move relative time logic from entry 2014-05-03 20:43:55 -04:00
Simon Eskildsen 11a9ddab08 entry: remove duplicate hook for debug level 2014-05-03 20:42:28 -04:00
Simon Eskildsen d85ac80aa9 entry: log with spaces between all operands on *ln #25 2014-05-03 20:20:07 -04:00
Simon Eskildsen eeed235659 entry: fire hook before obtaining reader #24 #13 2014-05-02 10:08:54 -04:00
Simon Eskildsen b73d08314f entry: make logger on entry public 2014-04-23 16:54:53 +00:00
Sarah Adams 3719c88c8f code builds -- fixes incorrect use of entry.Info, change to entry.Infof 2014-03-25 22:51:40 -07:00
Anthony Bishopric 9f6da0e77c Defer formatting of log values in Levelf(), Levelln()
The Level() family of log methods defer formatting of log
values until it is confident that the log level needs them.
This change allows that deferral to happen at the Levelf()
and Levelln() levels too.

This commit also adds benchmarks to demonstrate the improved
performance of these functions
2014-03-25 14:54:31 -07:00
Simon Eskildsen 1e8a799618 entry: move hook firing to entry.log 2014-03-12 10:10:22 -04:00
Simon Eskildsen ec306913da Fix example 2014-03-10 19:59:18 -04:00
Simon Eskildsen afde6aea11 levels: add to logger type 2014-03-10 19:52:39 -04:00
Simon Eskildsen 53371e3664 Add features from README 2014-03-10 19:22:08 -04:00
Simon Eskildsen f803b61ca1 entry: keys colored by severity 2014-03-06 09:56:52 -05:00
Burke Libbey e3978aa87c morehax 2014-03-04 11:44:09 -05:00
Burke Libbey ce9bacf7b3 quickhax 2014-03-04 11:38:21 -05:00