Giter Site home page Giter Site logo

async behavior of setLoggerLevel about log4z HOT 9 CLOSED

zsummer avatar zsummer commented on June 20, 2024
async behavior of setLoggerLevel

from log4z.

Comments (9)

zsummer avatar zsummer commented on June 20, 2024

Design is that. It may be lost some log when set logger filter level. but. I can & will change the design resolve this problem.

from log4z.

zsummer avatar zsummer commented on June 20, 2024

I already fix the first problem at the master.

from log4z.

zsummer avatar zsummer commented on June 20, 2024

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.

ILog4zManager::getRef().setLoggerLevel(LOG4Z_MAIN_LOGGER_ID, LOG_LEVEL_TRACE);
LOGT("set LOG_LEVEL_TRACE ----------------------------");
ILog4zManager::getRef().setLoggerLevel(LOG4Z_MAIN_LOGGER_ID, LOG_LEVEL_DEBUG);
LOGT("set LOG_LEVEL_TRACE ============================");

it's all log lose at the old log4z version.
current version only lose the second log. it's expect.
at current version. the setLoggerLevel call is immediately and sync when the level go down, and it's will be async when level go up.

from log4z.

n506 avatar n506 commented on June 20, 2024

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.

from log4z.

n506 avatar n506 commented on June 20, 2024

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

from log4z.

zsummer avatar zsummer commented on June 20, 2024

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.

from log4z.

zsummer avatar zsummer commented on June 20, 2024

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.
in my project have a lot of trace log, at most of the time it's all filter. if used all message input queue mod, it's not little degraded performence. so although this suggest is simple, i select other.

from log4z.

zsummer avatar zsummer commented on June 20, 2024

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.
I will think about and complete it later.
thanks your suggest.

from log4z.

zsummer avatar zsummer commented on June 20, 2024

the sync problem may be can use diff log pre-name to solve. it's support hot-update, but have little ugly.

from log4z.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.