Как переопределить неявную переменную журнала grails

#grails #grails-plugin #grails-domain-class #grails-controller #grails-4

#grails #grails-плагин #grails-домен-класс #grails-контроллер #grails-4

Вопрос:

У меня есть приложение grails, в котором я неявно получаю переменную журнала в папках контроллера и службы. Тем не менее, у меня есть свой собственный регистратор, который я хочу использовать во всем приложении. Как я могу переопределить эту неявную переменную журнала grails?

Комментарии:

1. Вы хотите log , чтобы свойство во всех ваших контроллерах и службах указывало на один и тот же экземпляр регистратора?

2. Да, я хочу, чтобы этот экземпляр журнала указывал на мой пользовательский регистратор, и все сообщения журнала должны поступать только через этот пользовательский регистратор.

3. Совместное использование одного экземпляра в приложении — необычная вещь, которую нужно хотеть сделать. Можете ли вы резюмировать, почему это было бы полезно?

4. Вы уверены, что на самом деле просто не хотите, чтобы каждый из отдельных регистраторов совместно использовал приложение?

5. Мне не нужен единственный экземпляр. Я просто хочу использовать свой пользовательский регистратор вместо предоставленного grails экземпляра журнала slf4j. Я попытался переопределить переменную журнала, как показано ниже. но это не сработало, потому что переменная журнала является окончательной….. Что я пробовал —> (log = new CustomLogger(Action.class ))

Ответ №1:

Как я могу переопределить эту неявную переменную журнала grails?

Если вы опустите org.grails:grails-logging плагин, регистратор, предоставляемый по умолчанию, не будет введен. На этом этапе вы можете определить свое собственное log свойство и делать с ним то, что хотите. Если вы хотите автоматически добавлять свое собственное log свойство ко всем своим контроллерам и службам, вы можете сделать это несколькими способами. Одним из них было бы написать преобразование AST. Другим было бы написать признак, который предоставляет ваше свойство logger, а затем ваши классы реализуют этот признак либо явно, либо посредством @Enhances .