Во-первых, вы должны определить конфигурацию appender / logger для каждой «функции», которая вам нужна в вашем log4j.properties
файле:
...
log4j.logger.Rails=INFO, A
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=/usr/share/tomcat6/logs/production.log
...
log4j.logger.feature_1=INFO, feature_1
log4j.appender.feature_1=org.apache.log4j.RollingFileAppender
log4j.appender.feature_1.File=/path/to/your/feature_1.log
...
log4j.logger.feature_N=INFO, feature_N
log4j.appender.feature_N=org.apache.log4j.RollingFileAppender
log4j.appender.feature_N.File=/path/to/your/feature_N.log
Таким образом, у каждого регистратора будет свой собственный фильтр серьезности и файл назначения.
Тогда вместо того, чтобы всегда использовать один и тот же регистратор, вы можете выбрать его в зависимости от метода, который вы вызвали на стороне Рубины на луне (из предоставленного вами примера адаптера):
class Log4jAdapter
def method_missing(meth, *args)
# Checking the method name matches feature_N
if /\Afeature_(\d+)\z/ =~ method.to_s
# Retrieve the appropriate logger => getLogger('feature_N')
logger = org.apache.log4j.Logger.getLogger(method.to_s)
# Log !
logger.log *args
else
puts "UNSUPPORTED METHOD CALLED: #{meth}"
end
end
end
Не провереноно я думаю, вы поймете идею.