You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Juha Haaga <ju...@codenomicon.com> on 2014/03/27 14:59:42 UTC

Logging which client connected to Solr

Hello,

I’m investigating the possibility of logging the username of the client who did the search on Solr along with the normal logging information. The username is in the basic auth headers of the request, and the access control is managed by an Apache instance proxying to Solr. Is there a way to append that information to the Solr query log, so that the log would look like this:

INFO  - 2014-03-27 11:16:24.000; org.apache.solr.core.SolrCore; [generic] webapp=/solr path=/select params={lots of params} hits=0 status=0 QTime=49 username=juha

I need to log both username and the query, and if I do it directly in Apache then I lose the information about amount of hits and the query time. If I log it with Solr then I get query time and hits, but no username. Username logging is higher priority requirement than the hits and query time, but I’m looking for solution that covers both cases. 

Has anyone implemented this kind of logging scheme, and how would I accomplish this? I couldn’t find this as a configuration option.

Regards,
Juha






Re: Logging which client connected to Solr

Posted by Jeff Wartes <jw...@whitepages.com>.
You could always just pass the username as part of the GET params for the
query. Solr will faithfully ignore and log any parameters it doesn¹t
recognize, so it¹d show up in your {lot of params}.

That means your log parser would need more intelligence, and your client
would have to pass in the data, but it would save any custom work on the
server side.



On 3/27/14, 7:07 AM, "Greg Walters" <gr...@answers.com> wrote:

>We do something similar and include the server's hostname in solr's
>response. To accomplish this you'll have to write a class that extends
>org.apache.solr.servlet.SolrDispatchFilter and put your custom class in
>place as the SolrRequestFilter in solr's web.xml.
>
>Thanks,
>Greg
>
>On Mar 27, 2014, at 8:59 AM, Juha Haaga <ju...@codenomicon.com>
>wrote:
>
>> Hello,
>> 
>> I¹m investigating the possibility of logging the username of the client
>>who did the search on Solr along with the normal logging information.
>>The username is in the basic auth headers of the request, and the access
>>control is managed by an Apache instance proxying to Solr. Is there a
>>way to append that information to the Solr query log, so that the log
>>would look like this:
>> 
>> INFO  - 2014-03-27 11:16:24.000; org.apache.solr.core.SolrCore;
>>[generic] webapp=/solr path=/select params={lots of params} hits=0
>>status=0 QTime=49 username=juha
>> 
>> I need to log both username and the query, and if I do it directly in
>>Apache then I lose the information about amount of hits and the query
>>time. If I log it with Solr then I get query time and hits, but no
>>username. Username logging is higher priority requirement than the hits
>>and query time, but I¹m looking for solution that covers both cases.
>> 
>> Has anyone implemented this kind of logging scheme, and how would I
>>accomplish this? I couldn¹t find this as a configuration option.
>> 
>> Regards,
>> Juha
>> 
>> 
>> 
>> 
>> 
>


Re: Logging which client connected to Solr

Posted by Greg Walters <gr...@answers.com>.
We do something similar and include the server's hostname in solr's response. To accomplish this you'll have to write a class that extends org.apache.solr.servlet.SolrDispatchFilter and put your custom class in place as the SolrRequestFilter in solr's web.xml.

Thanks,
Greg

On Mar 27, 2014, at 8:59 AM, Juha Haaga <ju...@codenomicon.com> wrote:

> Hello,
> 
> I’m investigating the possibility of logging the username of the client who did the search on Solr along with the normal logging information. The username is in the basic auth headers of the request, and the access control is managed by an Apache instance proxying to Solr. Is there a way to append that information to the Solr query log, so that the log would look like this:
> 
> INFO  - 2014-03-27 11:16:24.000; org.apache.solr.core.SolrCore; [generic] webapp=/solr path=/select params={lots of params} hits=0 status=0 QTime=49 username=juha
> 
> I need to log both username and the query, and if I do it directly in Apache then I lose the information about amount of hits and the query time. If I log it with Solr then I get query time and hits, but no username. Username logging is higher priority requirement than the hits and query time, but I’m looking for solution that covers both cases. 
> 
> Has anyone implemented this kind of logging scheme, and how would I accomplish this? I couldn’t find this as a configuration option.
> 
> Regards,
> Juha
> 
> 
> 
> 
> 


Re: Logging which client connected to Solr

Posted by Alexandre Rafalovitch <ar...@gmail.com>.
I assume you are passing extra info to Solr.

Then you can write servletfilter to put it in NDC or MDC which can then be
picked up by log4j config pattern.

This approach is not Solr specific. Just usual servlet/log stuff.

Regards,
     Alex
On 27/03/2014 9:00 pm, "Juha Haaga" <ju...@codenomicon.com> wrote:

> Hello,
>
> I’m investigating the possibility of logging the username of the client
> who did the search on Solr along with the normal logging information. The
> username is in the basic auth headers of the request, and the access
> control is managed by an Apache instance proxying to Solr. Is there a way
> to append that information to the Solr query log, so that the log would
> look like this:
>
> INFO  - 2014-03-27 11:16:24.000; org.apache.solr.core.SolrCore; [generic]
> webapp=/solr path=/select params={lots of params} hits=0 status=0 QTime=49
> username=juha
>
> I need to log both username and the query, and if I do it directly in
> Apache then I lose the information about amount of hits and the query time.
> If I log it with Solr then I get query time and hits, but no username.
> Username logging is higher priority requirement than the hits and query
> time, but I’m looking for solution that covers both cases.
>
> Has anyone implemented this kind of logging scheme, and how would I
> accomplish this? I couldn’t find this as a configuration option.
>
> Regards,
> Juha
>
>
>
>
>
>