-
Notifications
You must be signed in to change notification settings - Fork 191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Verbose mode should use STDOUT, not STDERR #25
Comments
why this is good: if output is logged to stdout, i could |
This is how logging is currently implemented: There is just one stream (currently I see no real benefit in unconditionally changing the output stream from |
@kdudka Your comment does not address this request. No one said that logging should "unconditionally" go to The request is to have error messages go to If that takes more effort than making a simple change to the |
On Tuesday, September 20, 2016 09:00:26 orev wrote:
By "unconditionally" I meant "enabled by default". We try to avoid changes
This request (which is orthogonal to what @glensc requested) is to some On Linux, you can use something like
It is not about code changes really. It is about changing an interface |
I suggest that for any 4.0 release that might come, this change be made so |
I do not think that such a convention applies generally. There are many programs out there that output info/progress/diagnostic messages to stderr, regardless severity of the messages being printed (curl, gcc, tar, ...). |
I don't want to be arguing on here, but I really find it hard to accept the assertion that the convention of The context for |
I am also really surprised by this behaviour. I would have expected that only error will go to stderr and all others go to stdout. |
I think neither the current nor the proposed behavior would please everyone. On top of that, changing the behavior in an update of logrotate is a no-go I think. Would it help if we introduced a new configuration and/or command line option to enable the proposed behavior? |
@kdudka yes i would help a lot thanks. |
I was also very surprised when I started getting emails from cron after adding the --verbose option. |
logrotate might crash when using invalid configuration settings in combination with include example configuration: /tmp/logsegv/segv.log { include /tmp/logsegv/segv.cfg "" { } } will lead to $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg WARNING: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /tmp/logsegv/segv.cfg including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:2 include nesting too deep error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in /tmp/logsegv/segv.log , skipping removing last 1 log configs error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in log config, skipping removing last 1 log configs config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in AddressSanitizer:DEADLYSIGNAL ================================================================= ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0) ==12601==The signal is caused by a READ memory access. ==12601==Hint: address points to the zero page. #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23 #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21 #2 0x4c78fc in readConfigPath logrotate/config.c:685:13 #3 0x4d164c in readConfigFile logrotate/config.c:1457:30 #4 0x4c78fc in readConfigPath logrotate/config.c:685:13 #5 0x4d164c in readConfigFile logrotate/config.c:1457:30 #6 0x4c78fc in readConfigPath logrotate/config.c:685:13 #7 0x4d164c in readConfigFile logrotate/config.c:1457:30 #8 0x4c78fc in readConfigPath logrotate/config.c:685:13 #9 0x4d164c in readConfigFile logrotate/config.c:1457:30 #10 0x4c78fc in readConfigPath logrotate/config.c:685:13 #11 0x4d164c in readConfigFile logrotate/config.c:1457:30 #12 0x4c78fc in readConfigPath logrotate/config.c:685:13 #13 0x4d164c in readConfigFile logrotate/config.c:1457:30 #14 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#15 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#16 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#17 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#18 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#19 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#20 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#21 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#22 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#23 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#24 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#25 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#26 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#27 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#28 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#29 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#30 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#31 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#32 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13 logrotate#34 0x4d961d in main logrotate/logrotate.c:2791:9 logrotate#35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba) logrotate#36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs ==12601==ABORTING fixes: logrotate#271
logrotate might crash when using invalid configuration settings in combination with include example configuration: /tmp/logsegv/segv.log { include /tmp/logsegv/segv.cfg "" { } } will lead to $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg WARNING: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /tmp/logsegv/segv.cfg including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:2 include nesting too deep error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in /tmp/logsegv/segv.log , skipping removing last 1 log configs error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in log config, skipping removing last 1 log configs config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in AddressSanitizer:DEADLYSIGNAL ================================================================= ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0) ==12601==The signal is caused by a READ memory access. ==12601==Hint: address points to the zero page. #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23 #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21 #2 0x4c78fc in readConfigPath logrotate/config.c:685:13 #3 0x4d164c in readConfigFile logrotate/config.c:1457:30 #4 0x4c78fc in readConfigPath logrotate/config.c:685:13 #5 0x4d164c in readConfigFile logrotate/config.c:1457:30 #6 0x4c78fc in readConfigPath logrotate/config.c:685:13 #7 0x4d164c in readConfigFile logrotate/config.c:1457:30 #8 0x4c78fc in readConfigPath logrotate/config.c:685:13 #9 0x4d164c in readConfigFile logrotate/config.c:1457:30 #10 0x4c78fc in readConfigPath logrotate/config.c:685:13 #11 0x4d164c in readConfigFile logrotate/config.c:1457:30 #12 0x4c78fc in readConfigPath logrotate/config.c:685:13 #13 0x4d164c in readConfigFile logrotate/config.c:1457:30 #14 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#15 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#16 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#17 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#18 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#19 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#20 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#21 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#22 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#23 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#24 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#25 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#26 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#27 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#28 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#29 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#30 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#31 0x4d164c in readConfigFile logrotate/config.c:1457:30 logrotate#32 0x4c78fc in readConfigPath logrotate/config.c:685:13 logrotate#33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13 logrotate#34 0x4d961d in main logrotate/logrotate.c:2791:9 logrotate#35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba) logrotate#36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs ==12601==ABORTING fixes: logrotate#271
logrotate might crash when using invalid configuration settings in combination with include example configuration: /tmp/logsegv/segv.log { include /tmp/logsegv/segv.cfg "" { } } will lead to $ ./logrotate -vfd -s /tmp/logsegv/segv.state /tmp/logsegv/segv.cfg WARNING: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /tmp/logsegv/segv.cfg including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg reading config file /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:1 duplicate log entry for /tmp/logsegv/segv.log including /tmp/logsegv/segv.cfg error: /tmp/logsegv/segv.cfg:2 include nesting too deep error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in /tmp/logsegv/segv.log , skipping removing last 1 log configs error: /tmp/logsegv/segv.cfg:4 unexpected log filename error: found error in log config, skipping removing last 1 log configs config.c:553:23: runtime error: load of null pointer of type 'struct logInfo *' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior config.c:553:23 in AddressSanitizer:DEADLYSIGNAL ================================================================= ==12601==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0000004d79a1 bp 0x7ffca98d0c30 sp 0x7ffca98d0c10 T0) ==12601==The signal is caused by a READ memory access. ==12601==Hint: address points to the zero page. #0 0x4d79a0 in freeTailLogs logrotate/config.c:553:23 #1 0x4cb482 in readConfigFile logrotate/config.c:1870:21 #2 0x4c78fc in readConfigPath logrotate/config.c:685:13 #3 0x4d164c in readConfigFile logrotate/config.c:1457:30 #4 0x4c78fc in readConfigPath logrotate/config.c:685:13 #5 0x4d164c in readConfigFile logrotate/config.c:1457:30 #6 0x4c78fc in readConfigPath logrotate/config.c:685:13 #7 0x4d164c in readConfigFile logrotate/config.c:1457:30 #8 0x4c78fc in readConfigPath logrotate/config.c:685:13 #9 0x4d164c in readConfigFile logrotate/config.c:1457:30 #10 0x4c78fc in readConfigPath logrotate/config.c:685:13 #11 0x4d164c in readConfigFile logrotate/config.c:1457:30 #12 0x4c78fc in readConfigPath logrotate/config.c:685:13 #13 0x4d164c in readConfigFile logrotate/config.c:1457:30 #14 0x4c78fc in readConfigPath logrotate/config.c:685:13 #15 0x4d164c in readConfigFile logrotate/config.c:1457:30 #16 0x4c78fc in readConfigPath logrotate/config.c:685:13 #17 0x4d164c in readConfigFile logrotate/config.c:1457:30 #18 0x4c78fc in readConfigPath logrotate/config.c:685:13 #19 0x4d164c in readConfigFile logrotate/config.c:1457:30 #20 0x4c78fc in readConfigPath logrotate/config.c:685:13 #21 0x4d164c in readConfigFile logrotate/config.c:1457:30 #22 0x4c78fc in readConfigPath logrotate/config.c:685:13 #23 0x4d164c in readConfigFile logrotate/config.c:1457:30 #24 0x4c78fc in readConfigPath logrotate/config.c:685:13 #25 0x4d164c in readConfigFile logrotate/config.c:1457:30 #26 0x4c78fc in readConfigPath logrotate/config.c:685:13 #27 0x4d164c in readConfigFile logrotate/config.c:1457:30 #28 0x4c78fc in readConfigPath logrotate/config.c:685:13 #29 0x4d164c in readConfigFile logrotate/config.c:1457:30 #30 0x4c78fc in readConfigPath logrotate/config.c:685:13 #31 0x4d164c in readConfigFile logrotate/config.c:1457:30 #32 0x4c78fc in readConfigPath logrotate/config.c:685:13 #33 0x4c70bb in readAllConfigPaths logrotate/config.c:759:13 #34 0x4d961d in main logrotate/logrotate.c:2791:9 #35 0x7fa31d719bba in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bba) #36 0x41f7a9 in _start (logrotate/logrotate+0x41f7a9) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /home/christian/Coding/workspaces/smartgit/logrotate/config.c:553:23 in freeTailLogs ==12601==ABORTING Fixes: #271 Closes #272
Yeah, @orev has a good point. This is conceptually correct and behavior contrary to this concept always make my eyebrows go up (logrotate or not). |
Verbose mode should send messages to STDOUT, not STDERR. This enables capturing non-error messages in log files while allowing errors to be received as email alerts when run as a cron job. Also conceptually, verbose messages are not errors, so they should not be placed on STDERR.
The text was updated successfully, but these errors were encountered: