Re: getRootLogger() thread-safe?
Guten Tag Kaspar Fischer, am Montag, 10. März 2014 um 18:32 schrieben Sie: Static local variables are not thread-safe so it looks to me as if you want to change that – from a user's perspective, it's nice to be able to assume that getRootLogger() is thread-safe. What do you think? I tend to agree, we fixed the same problem in LOGCXX-394 as well. I created a new bug and provided a patch for others to review: https://issues.apache.org/jira/browse/LOGCXX-430 Mit freundlichen Grüßen, Thorsten Schöning -- Thorsten Schöning E-Mail:thorsten.schoen...@am-soft.de AM-SoFT IT-Systeme http://www.AM-SoFT.de/ Telefon...05151- 9468- 55 Fax...05151- 9468- 88 Mobil..0178-8 9468- 04 AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 207 694 - Geschäftsführer: Andreas Muchow
Re: getRootLogger() thread-safe?
Guten Tag Kaspar Fischer, am Montag, 10. März 2014 um 03:20 schrieben Sie: Is getRootLogger() thread safe? Looks like the same problem as in LOGCXX-394 to me. https://issues.apache.org/jira/browse/LOGCXX-394 RepositorySelectorPtr LogManager::getRepositorySelector() { // // call to initialize APR and trigger start of logging clock // APRInitializer::initialize(); static spi::RepositorySelectorPtr selector; return selector; } LoggerRepositoryPtr LogManager::getLoggerRepository() { if (getRepositorySelector() == 0) { LoggerRepositoryPtr hierarchy(new Hierarchy()); RepositorySelectorPtr selector(new DefaultRepositorySelector(hierarchy)); getRepositorySelector() = selector; } return getRepositorySelector()-getLoggerRepository(); } LoggerPtr LogManager::getRootLogger() { // Delegate the actual manufacturing of the logger to the logger repository. return getLoggerRepository()-getRootLogger(); } Could try to just remove the static in the following line? static spi::RepositorySelectorPtr selector; If that works, we'll consider just removing that on trunk as well, like with LOG4CXX-394. Mit freundlichen Grüßen, Thorsten Schöning -- Thorsten Schöning E-Mail:thorsten.schoen...@am-soft.de AM-SoFT IT-Systeme http://www.AM-SoFT.de/ Telefon...05151- 9468- 55 Fax...05151- 9468- 88 Mobil..0178-8 9468- 04 AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 207 694 - Geschäftsführer: Andreas Muchow
Re: getRootLogger() thread-safe?
Hi Thorsten, Thanks a lot for the quick response! Unfortunately, we use a pre-built package so I can't patch the code. However, when I create a static variable log4cxx::LoggerPtr log4cxx_root_logger = log4cxx::Logger::getRootLogger(); and use log4cxx_root_logger in my code (instead of log4cxx::Logger::getRootLogger()), all works fine. Static local variables are not thread-safe so it looks to me as if you want to change that - from a user's perspective, it's nice to be able to assume that getRootLogger() is thread-safe. What do you think? - Kaspar On Mon, Mar 10, 2014 at 12:20 AM, Thorsten Schöning tschoen...@am-soft.dewrote: Guten Tag Kaspar Fischer, am Montag, 10. März 2014 um 03:20 schrieben Sie: Is getRootLogger() thread safe? Looks like the same problem as in LOGCXX-394 to me. https://issues.apache.org/jira/browse/LOGCXX-394 RepositorySelectorPtr LogManager::getRepositorySelector() { // // call to initialize APR and trigger start of logging clock // APRInitializer::initialize(); static spi::RepositorySelectorPtr selector; return selector; } LoggerRepositoryPtr LogManager::getLoggerRepository() { if (getRepositorySelector() == 0) { LoggerRepositoryPtr hierarchy(new Hierarchy()); RepositorySelectorPtr selector(new DefaultRepositorySelector(hierarchy)); getRepositorySelector() = selector; } return getRepositorySelector()-getLoggerRepository(); } LoggerPtr LogManager::getRootLogger() { // Delegate the actual manufacturing of the logger to the logger repository. return getLoggerRepository()-getRootLogger(); } Could try to just remove the static in the following line? static spi::RepositorySelectorPtr selector; If that works, we'll consider just removing that on trunk as well, like with LOG4CXX-394. Mit freundlichen Grüßen, Thorsten Schöning -- Thorsten Schöning E-Mail:thorsten.schoen...@am-soft.de AM-SoFT IT-Systeme http://www.AM-SoFT.de/ Telefon...05151- 9468- 55 Fax...05151- 9468- 88 Mobil..0178-8 9468- 04 AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 207 694 - Geschäftsführer: Andreas Muchow