X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_log.cpp;h=27ebadba34f3e54a6a466dc6e88a64827462d008;hb=HEAD;hp=981869641aea306bd75495af663c7a21accba525;hpb=8ced8e7b5de3ecba12ac68ce5c5e8cddf40d800f;p=metaproxy-moved-to-github.git diff --git a/src/filter_log.cpp b/src/filter_log.cpp index 9818696..27ebadb 100644 --- a/src/filter_log.cpp +++ b/src/filter_log.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -72,11 +72,6 @@ namespace metaproxy_1 { bool m_init_options; LFilePtr m_file; std::string m_time_format; - // Only used during confiqgure stage (no threading), - // for performance avoid opening files which other log filter - // instances already have opened - static std::list filter_log_files; - boost::mutex m_session_mutex; std::map m_sessions; }; @@ -93,7 +88,7 @@ namespace metaproxy_1 { std::ostringstream &os); void flush(); }; - + static std::list filter_log_files; } } @@ -123,10 +118,6 @@ void yf::Log::process(mp::Package &package) const } -// static initialization -std::list yf::Log::Impl::filter_log_files; - - yf::Log::Impl::Impl(const std::string &x) : m_msg_config(x), m_1line(false), @@ -335,7 +326,6 @@ static void log_1line_Z_APDU(Z_APDU *z_req, Z_APDU *z_res, WRBUF w) res->records->u.multipleNonSurDiagnostics->diagRecs); } wrbuf_puts(w, " "); - assert(req->preferredRecordSyntax); log_syntax(w, req->preferredRecordSyntax); wrbuf_printf(w, " %s " ODR_INT_PRINTF "+" ODR_INT_PRINTF " ", @@ -614,7 +604,8 @@ void yf::Log::Impl::process(mp::Package &package) Z_IdAuthentication *a = req->idAuthentication; if (a) { - if (a->which == Z_IdAuthentication_idPass) + if (a->which == Z_IdAuthentication_idPass + && a->u.idPass->userId) user = a->u.idPass->userId; else if (a->which == Z_IdAuthentication_open) user = a->u.open; @@ -690,7 +681,11 @@ void yf::Log::Impl::process(mp::Package &package) { mp::odr odr(ODR_PRINT); odr_set_stream(odr, m_file->fhandle, stream_write, 0); + if (!m_file->fhandle) + yaz_log_lock(); z_GDU(odr, &gdu_req, 0, 0); + if (!m_file->fhandle) + yaz_log_unlock(); } } } @@ -700,6 +695,8 @@ void yf::Log::Impl::process(mp::Package &package) Z_GDU *gdu_res = package.response().get(); + gdu_req = package.request().get(); + yaz_timing_stop(timer); double duration = yaz_timing_get_real(timer); @@ -783,7 +780,11 @@ void yf::Log::Impl::process(mp::Package &package) { mp::odr odr(ODR_PRINT); odr_set_stream(odr, m_file->fhandle, stream_write, 0); + if (!m_file->fhandle) + yaz_log_lock(); z_GDU(odr, &gdu_res, 0, 0); + if (!m_file->fhandle) + yaz_log_unlock(); } } }