Can you show your script?

Looking at the code, the documentation is wrong and the Logger object is bound 
to variable "logger" instead. 

Which variables are available depends on which filter method is called. This 
depends on where the filter is configured. The LogEvent is not available for 
global filters. "logger" should be available for global filters. 

https://github.com/apache/logging-log4j2/blob/master/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java




Sent from my iPhone

> On 11 Nov 2016, at 7:15, Benjamin Jaton <benjamin.ja...@gmail.com> wrote:
> 
> Sure, here it is:
> 
> {
>  "configuration" : {
>    "status" : "warn",
>    "scripts": {
>      "ScriptFile": { "name":"test.filter", "path":
> "/usr/local/apps/test.groovy" }
>    },
>    "ScriptFilter": {
>      "onMatch": "ACCEPT",
>      "onMisMatch": "DENY",
>      "ScriptRef": { "ref": "test.filter" }
>    },
>    "appenders" : {
>      "appender" : [ {
>        "type" : "Console",
>        "name" : "STDOUT",
>        "PatternLayout" : {
>          "pattern" : "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1.}:%L -
> [%X{md5message}] %m%n"
>        }
>      } ]
>    },
>    "loggers" : {
>      "root" : {
>        "level" : "INFO",
>        "additivity" : "false",
>        "includeLocation" : "true",
>        "AppenderRef" : {
>          "ref" : "STDOUT"
>        }
>      }
>    }
>  }
> }
> 
>> On Thu, Nov 10, 2016 at 9:01 AM, Remko Popma <remko.po...@gmail.com> wrote:
>> 
>> Can you show your configuration?
>> 
>> Sent from my iPhone
>> 
>>>> On 11 Nov 2016, at 1:56, Benjamin Jaton <benjamin.ja...@gmail.com>
>>> wrote:
>>> 
>>> I tried all the variables in the doc, no luck:
>>> 
>>> Caused by: groovy.lang.MissingPropertyException: No such property:
>>> loggerName for class: Script2
>>>   at
>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(
>> ScriptBytecodeAdapter.java:53)
>>>   at
>>> org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(
>> PogoGetPropertySite.java:52)
>>>   at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.
>> callGroovyObjectGetProperty(AbstractCallSite.java:307)
>>>   at Script2.run(Script2.groovy:8)
>>>   at
>>> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(
>> GroovyScriptEngineImpl.java:343)
>>>   ... 12 more
>>> 
>>>> On Wed, Nov 9, 2016 at 10:54 PM, Remko Popma <remko.po...@gmail.com>
>> wrote:
>>>> 
>>>> According to this https://logging.apache.org/
>>>> log4j/2.x/manual/filters.html#Script you should be able to use the
>>>> variable named loggerName in global script filters.
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>>>> On 10 Nov 2016, at 4:31, Benjamin Jaton <benjamin.ja...@gmail.com>
>>>>> wrote:
>>>>> 
>>>>> Hmm, I'm not sure, I tried to do this in groovy:
>>>>> 
>>>>> println(args[0])
>>>>> 
>>>>> But I get:
>>>>> Caused by: groovy.lang.MissingPropertyException: No such property:
>> args
>>>> for
>>>>> class: Script2
>>>>>  at
>>>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(
>>>> ScriptBytecodeAdapter.java:53)
>>>>>  at
>>>>> org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(
>>>> PogoGetPropertySite.java:52)
>>>>>  at
>>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.
>>>> callGroovyObjectGetProperty(AbstractCallSite.java:307)
>>>>>  at Script2.run(Script2.groovy:8)
>>>>>  at
>>>>> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(
>>>> GroovyScriptEngineImpl.java:343)
>>>>>  ... 12 more
>>>>> 
>>>>> Then I tried:
>>>>> 
>>>>> println(parameters)
>>>>> 
>>>>> But it returns 'null'
>>>>> 
>>>>>> On Tue, Nov 8, 2016 at 5:18 PM, Remko Popma <remko.po...@gmail.com>
>>>> wrote:
>>>>>> 
>>>>>> All filter methods have a Logger object as the first parameter. Can
>> you
>>>>>> use that?
>>>>>> 
>>>>>> Sent from my iPhone
>>>>>> 
>>>>>>> On 9 Nov 2016, at 9:45, Benjamin Jaton <benjamin.ja...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>> As far as I know, there is no way for a global filter to know which
>>>>>> logger
>>>>>>> we're working it for.
>>>>>>> Which in my case is not the best since I would compute a hash for all
>>>> the
>>>>>>> messages of all my loggers, instead of just the one I need them for.
>>>>>>> 
>>>>>>> On Tue, Nov 8, 2016 at 4:30 PM, Benjamin Jaton <
>>>> benjamin.ja...@gmail.com
>>>>>>> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Ah, I can't use 'logEvent' but I can use 'message', perfect, thank
>>>> you!
>>>>>>>> 
>>>>>>>>> On Tue, Nov 8, 2016 at 4:21 PM, Remko Popma <remko.po...@gmail.com
>>> 
>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Yes Filters can be applied at different stages of the logging
>>>> pipeline.
>>>>>>>>> The Filter interface has separate methods for these stages.
>> Different
>>>>>>>>> parameters are passed to these methods.
>>>>>>>>> 
>>>>>>>>> Sent from my iPhone
>>>>>>>>> 
>>>>>>>>>>> On 9 Nov 2016, at 8:57, Benjamin Jaton <benjamin.ja...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> Ah, interesting. I seem to be able to make modification using this
>>>>>>>>> global
>>>>>>>>>> filter.
>>>>>>>>>> 
>>>>>>>>>> However I don't seem to have access to the log event that way?
>>>>>>>>>> 
>>>>>>>>>> Caused by: groovy.lang.MissingPropertyException: No such
>> property:
>>>>>>>>> logEvent
>>>>>>>>>> for class: Script2
>>>>>>>>>> at
>>>>>>>>>> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(Scr
>>>>>>>>> iptBytecodeAdapter.java:53)
>>>>>>>>>> at
>>>>>>>>>> org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.get
>>>>>>>>> Property(PogoGetPropertySite.java:52)
>>>>>>>>>> at
>>>>>>>>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGr
>>>>>>>>> oovyObjectGetProperty(AbstractCallSite.java:307)
>>>>>>>>>> at Script2.run(Script2.groovy:8)
>>>>>>>>>> at
>>>>>>>>>> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(Groov
>>>>>>>>> yScriptEngineImpl.java:343)
>>>>>>>>>> ... 12 more
>>>>>>>>>> 
>>>>>>>>>>> On Tue, Nov 8, 2016 at 3:47 PM, Remko Popma <
>> remko.po...@gmail.com
>>>>> 
>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> If you make it a global filter it will get applied before the
>>>>>> LogEvent
>>>>>>>>> is
>>>>>>>>>>> constructed. Please try that.
>>>>>>>>>>> 
>>>>>>>>>>> Remko
>>>>>>>>>>> 
>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>> 
>>>>>>>>>>>> On 9 Nov 2016, at 7:02, Benjamin Jaton <
>> benjamin.ja...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> I am applying it on the root logger.
>>>>>>>>>>>> 
>>>>>>>>>>>>> On Tue, Nov 8, 2016 at 12:47 PM, Matt Sicker <boa...@gmail.com
>>> 
>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Where are you applying the filter? On the appender or somewhere
>>>>>> else?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 8 November 2016 at 13:13, Benjamin Jaton <
>>>>>>>>> benjamin.ja...@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> hello,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I was playing with log4j2 filters to generate a hash in groovy
>>>>>> that
>>>>>>>>> I
>>>>>>>>>>>>> would
>>>>>>>>>>>>>> put in the threadcontext map, and then use in my log pattern:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1.}:%L - %m [%X{myhash}]
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> But the hash is printed on the NEXT log message.
>>>>>>>>>>>>>> My understanding is that at this point the log message is
>>>> already
>>>>>>>>>>>>> formatted
>>>>>>>>>>>>>> and final.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Is there another way I can use a custom script where the log
>>>> event
>>>>>>>>> can
>>>>>>>>>>>>>> actually be modified?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>> Ben
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>>>>> 
>>>>>>>>>>> ------------------------------------------------------------
>>>>>> ---------
>>>>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@
>> logging.apache.org
>>>>>>>>>>> For additional commands, e-mail: log4j-user-help@logging.
>>>> apache.org
>>>>>>>>> 
>>>>>>>>> ------------------------------------------------------------
>>>> ---------
>>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>>>>>>> For additional commands, e-mail: log4j-user-help@logging.
>> apache.org
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>> 
>> 

Reply via email to