Drools Planner logs to slf4j, from which you can configure logging with log4j or logback (and others) to log to whatever and however you need it.

Drools Expert (the rule engine itself) does not log to anything by default.
A) You can add KnowledgeRuntimeLoggerFactory.newFileLogger(...) but that will not give you the flexibility of a logging framework (such as rolling files, backup files, controlling verbosity by package, controlling verbosity by INFO/DEBUG/TRACE, log pattern configuration, ...).
B) You can implement your own WorkingMemoryLogger and pipe that to slf4j, but WorkingMemoryLogger will probably not log anything of other drools expert systems, such as the KnowledgeAgent, changeset problems, xls to rules converstion, ... Those messages will still be send to System.out.
C) If you want Drools Expert to log to slf4j by default, vote for this issue: https://issues.jboss.org/browse/JBRULES-3551

Op 02-08-12 11:07, Tom Eugelink schreef:
I'm still pretty new to drools (5.4.0 final) and I would like to see what Drools does; rules validation, MVEL expression evaluation, etc.

There is a webpage that says that in order to activate logging I need to add a line to my log4j.xml:

First remark is that the XML is old style log4j; the current XML uses loggers and levels instead of category and priority. Beside that, it does not seem to work. After I've added <logger name="org.drools"><level value="debug" /></logger> to my xml, nothing is logged. I know for sure that log4j via slf4j is working:

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@1c672d0.
log4j: Using URL [file:/C:/Documents%20and%20Settings/User/My%20Documents/frozn/components/engine/_build/log4j.xml] for automatic log4j configuration.
2012-08-02 10:55:04,400 INFO nl.o837.frozn.engine.drools.test.DroolsExcelTrial.main(DroolsExcelTrial.java:49) running trail

However there is no Drools logging output on the console, only the print statements I've placed in the entity models. If I add this line to the code:

Then there is some logging output:
OBJECT ASSERTED value:nl.o837.frozn.bm.Application@f664ec&ApplicationId=1 factId: 1
ACTIVATION CREATED rule:PassportValidation_20 activationId:PassportValidation_20 [2] declarations: p=nl.o837.frozn.bm.Passport@5e29e5&PassportId=2(2)
OBJECT ASSERTED value:nl.o837.frozn.bm.Passport@5e29e5&PassportId=2 factId: 2
BEFORE ACTIVATION FIRED rule:PassportValidation_20 activationId:PassportValidation_20 [2] declarations: p=nl.o837.frozn.bm.Passport@5e29e5&PassportId=2(2)

So Drools actually is producing logging information.

Is the documentation on the webpage incorrect? How do I get the logging information I would like?


rules-users mailing list

With kind regards,
Geoffrey De Smet