Commit Graph

120 Commits

Author SHA1 Message Date
earlzo 1893e9a3ed Fixed: comment 2018-02-20 16:28:12 +08:00
Jay Ching Lim be569094e9
Make fireHooks() method receive a copy of Entry structure to avoid race conditions
Signed-off-by: Jay Ching Lim <imjching@users.noreply.github.com>
2018-02-12 17:26:48 -05:00
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
Dave Clendenan 40f571805d Merge branch 'master' of https://github.com/dclendenan/logrus 2017-08-30 15:43:36 -07:00
Dave Clendenan eab1019f63 Merge branch 'master' of https://github.com/sirupsen/logrus 2017-08-30 15:39:09 -07:00
Aditya Mukerjee c830992a61 Take lock on mutex when firing hooks 2017-08-17 15:22:06 +01:00
Dave Clendenan 3cb9e18ef9 test updates
- add tests for callers accessed directly or via function pointer
  (results are unchanged)
- undo unwanted capitalization/export in previous commit
2017-08-02 17:21:18 -07:00
Dave Clendenan 7d48cb786e Merge branch 'master' of https://github.com/sirupsen/logrus
Conflicts:
	alt_exit_test.go
	formatter.go
	json_formatter.go
2017-08-02 13:18:39 -07: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
Dave Clendenan 88dd8df1f8 responses to code review
- field rename to be more properly generic
 - drop rewrite of main.main
2016-12-06 12:53:21 -08:00
Dave Clendenan f08011a10f merge upstream, add tests, full method context
- added benchmarks, and assertions for timeliness
- replaced regex usage in package-name handling with a straight
  comparison to a cached value
- log the fullly-qualified method name, to remove ambiguity
    eg: github.com/fflintstone/yabba.dabba.doo
- clean up possibly-unsafe assumptions about using the standard logger,
  remove global lookup function to enforce safe usage
2016-12-01 10:23:00 -08:00
Dave Clendenan 65f3af38f7 simplify hasCaller check 2016-11-30 15:15:38 -08:00
Dave Clendenan a5c845c224 responses to review comments
- empty string as marker for failure to discover calling function
 - tighten up logger usage - don't rely on std logger internally

Also fix ordering of expected/got in logrus_test.go to ensure correct
output form test failures.
2016-11-30 14:07:10 -08:00
Dave Clendenan 4575b7a64d revert slight added complexity in NewEntry() 2016-11-30 11:36:48 -08:00
Dave Clendenan 348bace269 doc updates, and relabel ReportMethod
in the Logrus context it's the caller, so use that internally.  Label
stays as 'method' since in the context of the log event that seems more
correct.
2016-11-29 09:35:34 -08:00
Dave Clendenan 1e21450408 push compilation even higher, to reduce to one call 2016-11-28 16:22:33 -08:00
Dave Clendenan 8161d932a1 performance: precompile regex before iterating 2016-11-28 14:47:38 -08:00
Dave Clendenan 93af604ba7 First cut at adding calling method
If log.SetReportMethod(true) then method=PACKAGE.FUNCTION will be added
as a field to log lines.
eg: time="2016-11-25T19:04:43-08:00" level=info method=main msg="log
testing"

TODO: documentation, examples
2016-11-25 19:02:56 -08: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
Simon Eskildsen 3ef01c6291 entry: don't panic 2014-03-03 17:35:32 -05:00
Simon Eskildsen b7027167d5 entry: add basic coloring if tty is a terminal 2014-03-03 17:33:35 -05:00
Simon Eskildsen 11dbaff352 Code review fixes 2014-02-24 06:34:12 -05:00
Simon Eskildsen 0bd36d372c code cleanup 2014-02-23 19:53:50 -05:00
Simon Eskildsen 6c895096e8 split into multiple files 2014-02-23 19:50:42 -05:00