-
Notifications
You must be signed in to change notification settings - Fork 212
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
async behavior of setLoggerLevel #31
Comments
Design is that. It may be lost some log when set logger filter level. but. I can & will change the design resolve this problem. |
I already fix the first problem at the master. |
first. setLoggerLevel is one immediately sync call, but write log is async call. so it's will lose some log when switch filter level( specific level go up). like this code.
it's all log lose at the old log4z version. |
mm. somewhat complex.. may be its better to filter out messages in queue processing procedure and add to queue all messages? in this case with sync setLevel (and other behavior-modifing functions) no messages will be lost? of course it'll impact performance. in some usecases noticeably. but in other cases - like mine - degraded performance is better than losing messages moreover, splitting one queue to multiple, one per logger, will allow any dynamic in-sync tuning for loggers and may be even get rid of most hateful comment //! Needs to be called before ILog4zManager::Start, OR Do not call. |
after some thinking, about queue and level.. to have true full in-sync control on loggers behavior and messages control instructions should be also queued mixed with log messages mm. i think its beyond this ticket/issue |
swich level, itself is filter/discard some log. so i think the "set filter level" operator can tolerate lose some log, now log4z will as more as possible to keep the more log when switch level, I think it's enough, you can assume the operation can't lose any log now. |
I thinked your suggest. the performence is 'queue i/o' > 'log create/destroy' > 'disk io'. so the multi -queue suggest is not important. and the log create/destroy is better important because it's new one fixed big memory each pushlog. |
at first of this project. I have no think about the sync write log, it's apend to project latter. so it's not perfect, only have the features. |
the sync problem may be can use diff log pre-name to solve. it's support hot-update, but have little ugly. |
hello
i consider this behavior as a bug
f.e.
LOG_INFO(id, "info1");
ILog4zManager::getPtr()->setLoggerLevel(id, LOG_LEVEL_TRACE);
LOG_TRACE(id, "trace");
LOG_INFO(id, "info2");
will result in
info1
info2
trace message are lost
if we add some sleep after setLoggerLevel - ok , message is displayed
behavior is active with LOG4Z_ALL_SYNCHRONOUS_OUTPUT = false
with LOG4Z_ALL_SYNCHRONOUS_OUTPUT = true - all goes as it should
The text was updated successfully, but these errors were encountered: