Closed ghost closed 8 years ago
Hey @steffenhoenig. That's a really cool idea! I was thinking of implementing something similar, but never got enough time for it.
Anyway, to the logger.
Function Log.RegisterLogger
takes two parameters:
First is the name of the logger
- how you want to call it.
Second is the name of the function that is used for logging
.
After you register the logger in the system, you need to set what you want logged. The simplest way to do that is to log everything in a namespace
. Just put namespace Hello
in the file you want to log from and then:
Log.AddOutput Hello $logger_name
Take a look here for the example usage: logging.sh.
In any case, if all you need is to use subject=$log_level
, you can use the default loggers, which are already registered. Default logger CUSTOM
prints the $subject
by default.
#!/usr/bin/env bash
## BOOTSTRAP ##
source "$( cd "${BASH_SOURCE[0]%/*}" && pwd )/lib/oo-framework.sh"
namespace MyApp
Log.AddOutput MyApp CUSTOM
subject=WARN Log "I am a warning"
subject=STEFFEN Log "I am a Steffen :-)"
The above should work and print out:
[WARN] [steffen.sh:9] I am a warning
[STEFFEN] [steffen.sh:10] I am a Steffen :-)
If you don't want the file and line in the logs, we can write a simple Logger Function:
# (...) bootstrap (...) #
namespace MyApp
SteffensLoggingFunction() {
Console.WriteStdErr "$(UI.Color.Blue)[$subject]$(UI.Color.Default) $*"
}
Log.RegisterLogger STEFFEN_SHORT_LOGGER SteffensLoggingFunction
Log.AddOutput MyApp STEFFEN_SHORT_LOGGER
subject=WARN Log "I am a warning"
subject=STEFFEN Log "I am a Steffen :-)"
Prints:
[WARN] I am a warning
[STEFFEN] I am a Steffen :-)
Be sure to checkout both doc. sections on logging:
If you have more questions, shoot.
Also, regarding what you're trying to do - I think it would be better if you wrote a new module, say System.HttpImport
for that purpose. We could integrate it at a later point, but for now - for debugging purposes - it will be much easier for you to develop that way.
@steffenhoenig did that help? Can I close the issue?
Hi @niieani ,
yeah that helped to get my head around it. Just working with a line like
namespace oo
Log.AddOutput oo CUSTOM
And, et voila I got all the debug output I had been after. Thx mate.
P.S. Your hint to make it upstream compatible inspired me to refactor it to another file. Will upload it asap. Cheers!
Hi niieani,
I forked your bash-oo-framework to extend the System.Import function for loading modules directly from github repos. Thus I'd like to print out the subject=level{2,3,4} .... lines Unfortunately I don' really understand how to set-up the logger.
I tried this: