Comments (7)
You can do that by redefining the LOG4CPLUS_MACRO_FUNCTION()
function macro. The sequence should be something like this:
#include <log4cplus/loggingmacros.h>
#undef LOG4CPLUS_MACRO_FUNCTION
#define LOG4CPLUS_MACRO_FUNCTION() __FUNCTION__
Undef and define the macro after the loggingmacros.h
has been included.
from log4cplus.
Thank you, yeah this fulfills my requirements.
from log4cplus.
This works when I have this library as shared, but when I try it as a static library, no matter what I do, the default 'PRETTY_FUNCTION' is still used. I can't change it even when I redefine that macro. It does nothing. I also tried editing the config and defines.hxx in includes, but 'PRETTY_FUNCTION' is still set as the default. I want to change it to FUNCTION. Another question: wouldn't it be better to have another flag in the configurator that differentiates between 'func', FUNCTION, and PRETTY_FUNCTION? It would be easier to configure.
I am using latest version of log4cplus.
from log4cplus.
It is a macro, it is active where it is used. If you compile the code that uses the macro into a binary or a library, you can't change it afterwards.
from log4cplus.
I have found it the hard way, but I would need to set the function macro persistently to FUNCTION but when i tried to redefine that config.hxx and defines.hxx before compilation still PRETTY_FUNCTION was used
from log4cplus.
You have to use it in the way I have shown:
#include <log4cplus/loggingmacros.h>
#undef LOG4CPLUS_MACRO_FUNCTION
#define LOG4CPLUS_MACRO_FUNCTION() __FUNCTION__
You cannot do it any other way.
from log4cplus.
"I think we don't understand each other. This is an example program.
#include <log4cplus/initializer.h>
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/loggingmacros.h>
#undef LOG4CPLUS_MACRO_FUNCTION
#define LOG4CPLUS_MACRO_FUNCTION() __FUNCTION__
using namespace std;
using namespace log4cplus;
using namespace log4cplus::helpers;
int main(const int argc, char* argv[]) {
Initializer initializer;
Logger root = Logger::getRoot();
PropertyConfigurator::doConfigure("log4cplus.properties");
LOG4CPLUS_WARN(root, "Modem timeout");
return 0;
}
No matter what I define on that macro FUNCTION PRETTY_FUNCTION func, the output is always like this:
[WARN ] 2024-02-03 08:20:34 (main.cpp: int main(int, char**)) 46: Modem timeout
When I had this library as a .so, everything worked correctly. However, when I try to use it as a .a library, it doesn't work."
expected output will be something like this:
[WARN ] 2024-02-03 08:20:34 (main.cpp: main) 46: Modem timeout
from log4cplus.
Related Issues (20)
- ./configure fails using c++2a HOT 3
- A link error occurred while compiling the my program. HOT 4
- Question: Effect of LOG4CPLUS_REQUIRE_EXPLICIT_INITIALIZATION on Windows? HOT 5
- Setting log level through env in log config file HOT 3
- Help needed: how to periodically flush logger with appender's immediateFlush set to false? HOT 2
- log file name not change after rollover TimeBasedRollingFileAppender HOT 3
- log's maxsize>200kb,but it dosen't work HOT 2
- Opentelemetry integration HOT 1
- What kind of compilation options can correctly generate a multi-threaded logging library HOT 5
- Win64 application crash on exit HOT 1
- Why mingw can't complie log4cplus-2.1.1? HOT 1
- Sending logs from log4cplus to log4j via TCP HOT 1
- Is it possible to build log4cplus for QNX aarch64le? HOT 3
- Save all configuration in a file HOT 2
- Question: Which latest version of Log4cplus I should use on RedHat 7.9 with DevToolset11-toolchain ( GCC 11.2 ) compiler HOT 7
- Does not work when maxBackupIndex is set to 0 HOT 1
- Include Headers Possibly Causing Build Error HOT 5
- how to set FD_CLOEXEC for log4cplus HOT 1
- Inconsistent Log File Permissions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from log4cplus.