Loading...
Searching...
No Matches
XrdCl::Log Class Reference

Handle diagnostics. More...

`#include <XrdClLog.hh>`

Collaboration diagram for XrdCl::Log:

## Public Types

enum | LogLevel { NoMsg = 0 , ErrorMsg = 1 , WarningMsg = 2 , InfoMsg = 3 , DebugMsg = 4 , DumpMsg = 5 }
| Log levels. More...

## Public Member Functions

| Log ()
| Constructor.
| ~Log ()
void | Debug (uint64_t topic, const char *format,...)
| Print a debug message.
void | Dump (uint64_t topic, const char *format,...)
| Print a dump message.
void | Error (uint64_t topic, const char *format,...)
| Report an error.
LogLevel | GetLevel () const
| Get the log level.
void | Info (uint64_t topic, const char *format,...)
| Print an info.
uint64_t | RegisterTopic (const std::string &topic)
| Register new topic.
void | Say (LogLevel level, uint64_t topic, const char *format, va_list list)
void | SetLevel (const std::string &level)
| Set the level of the messages that should be sent to the destination.
void | SetLevel (LogLevel level)
| Set the level of the messages that should be sent to the destination.
void | SetMask (const std::string &level, uint64_t mask)
| Sets the mask for the topics of messages that should be printed.
void | SetMask (LogLevel level, uint64_t mask)
| Sets the mask for the topics of messages that should be printed.
void | SetOutput (LogOut *output)
| Set the output that should be used.
void | SetPid (pid_t pid)
| Set pid.
void | SetTopicName (uint64_t topic, std::string name)
| Map a topic number to a string.
void | Warning (uint64_t topic, const char *format,...)
| Report a warning.

## Detailed Description

Handle diagnostics.

Definition at line 100 of file XrdClLog.hh.

## Member Enumeration Documentation

## LogLevel

enum XrdCl::Log::LogLevel

Log levels.

Enumerator
NoMsg | report nothing
ErrorMsg | report errors
WarningMsg | report warnings
InfoMsg | print info
DebugMsg | print debug info
DumpMsg | print details of the request and responses

Definition at line 106 of file XrdClLog.hh.

{
NoMsg = 0,
ErrorMsg = 1,
WarningMsg = 2,
InfoMsg = 3,
DebugMsg = 4,
DumpMsg = 5
};
XrdCl::Log::InfoMsg
@ InfoMsg
print info
Definition XrdClLog.hh:111
XrdCl::Log::NoMsg
@ NoMsg
report nothing
Definition XrdClLog.hh:108
XrdCl::Log::WarningMsg
@ WarningMsg
report warnings
Definition XrdClLog.hh:110
XrdCl::Log::DebugMsg
@ DebugMsg
print debug info
Definition XrdClLog.hh:112
XrdCl::Log::ErrorMsg
@ ErrorMsg
report errors
Definition XrdClLog.hh:109
XrdCl::Log::DumpMsg
@ DumpMsg
print details of the request and responses
Definition XrdClLog.hh:113

## Constructor & Destructor Documentation

## Log()

XrdCl::Log::Log | ( |  | ) |

inline

Constructor.

Definition at line 119 of file XrdClLog.hh.

: pLevel( NoMsg ), pTopicMaxLength( 18 ), pPid(0)
{
pOutput = new LogOutCerr();
int maxMask = (int)DumpMsg+1;
for( int i = 0; i < maxMask; ++i )
pMask[i] = 0xffffffffffffffffULL;
}

References DumpMsg, and NoMsg.

## ~Log()

XrdCl::Log::~Log | ( |  | ) |

inline

Definition at line 130 of file XrdClLog.hh.

{
delete pOutput;
}

## Member Function Documentation

## Debug()

void XrdCl::Log::Debug | ( | uint64_t | topic,
|  | const char * | format,
|  |  | ... )

Print a debug message.

Definition at line 282 of file XrdClLog.cc.

{
if( likely( GetLevel() < DebugMsg ) )
return;
if( unlikely( (topic & pMask[DebugMsg]) == 0 ) )
return;
va_list argList;
va_start( argList, format );
Say( DebugMsg, topic, format, argList );
va_end( argList );
}
likely
#define likely(x)
Definition XrdClOptimizers.hh:26
unlikely
#define unlikely(x)
Definition XrdClOptimizers.hh:27
Say
XrdOucPup XrdCmsParser::Pup & Say
Definition XrdCmsParser.cc:124
XrdCl::Log::GetLevel
LogLevel GetLevel() const
Get the log level.
Definition XrdClLog.hh:258

References DebugMsg, GetLevel(), likely, Say, and unlikely.

Referenced by XrdCl::Channel::Channel(), XrdCl::ClassicCopyJob::ClassicCopyJob(), XrdCl::Stream::Stream(), XrdCl::ThirdPartyCopyJob::ThirdPartyCopyJob(), XrdCl::TPFallBackCopyJob::TPFallBackCopyJob(), XrdCl::XRootDMsgHandler::XRootDMsgHandler(), XrdCl::Stream::~Stream(), XrdCl::XRootDMsgHandler::~XRootDMsgHandler(), XrdCl::PollerBuiltIn::AddSocket(), XrdCl::FileStateHandler::AfterForkChild(), XrdCl::InQueue::AssignTimeout(), XrdCl::CheckSumManager::Calculate(), XrdCl::AsyncSocketHandler::CheckHSWait(), XrdCl::FileStateHandler::Checkpoint(), XrdCl::Utils::CheckTPC(), XrdCl::Utils::CheckTPCLite(), XrdCl::ForkHandler::Child(), child(), XrdCl::FileStateHandler::ChkptWrt(), XrdCl::FileStateHandler::ChkptWrtV(), XrdCl::AsyncSocketHandler::Close(), XrdCl::FileStateHandler::Close(), XrdCl::AsyncSocketHandler::Connect(), XrdCl::PollerFactory::CreatePoller(), XrdCl::FileStateHandler::DelXAttr(), DoLS(), XrdCl::AsyncSocketHandler::DoTlsHandShake(), XrdCl::FSExecutor::Execute(), XrdCl::FileStateHandler::Fcntl(), XrdCl::Stream::ForceError(), XrdCl::InQueue::GetHandlerForMessage(), XrdCl::Env::GetInt(), XrdCl::DefaultEnv::GetMonitor(), XrdCl::Env::GetString(), XrdCl::FileStateHandler::GetXAttr(), XrdCl::AsyncSocketHandler::HandleHandShake(), IndexRemote(), XrdCl::FileStateHandler::ListXAttr(), XrdCl::Utils::LogHostAddresses(), XrdCl::XRootDTransport::MultiplexSubStream(), XrdCl::FileStateHandler::OnClose(), XrdCl::Stream::OnConnect(), XrdCl::AsyncSocketHandler::OnConnectionReturn(), XrdCl::Stream::OnError(), XrdCl::FileStateHandler::OnOpen(), XrdCl::Stream::OnReadTimeout(), XrdCl::Stream::OnReadyToWrite(), XrdCl::FileStateHandler::Open(), XrdCl::ZipArchive::OpenArchive(), XrdCl::ForkHandler::Parent(), parent(), XrdCl::FileStateHandler::PgRead(), XrdCl::FileStateHandler::PgReadImpl(), XrdCl::FileStateHandler::PgWriteImpl(), XrdCl::CopyProcess::Prepare(), XrdCl::ForkHandler::Prepare(), prepare(), XrdCl::XRootDMsgHandler::Process(), XrdCl::Utils::ProcessConfigDir(), XrdCl::PlugInManager::ProcessEnvironmentSettings(), XrdCl::Env::PutInt(), XrdCl::Env::PutString(), XrdCl::FileStateHandler::Read(), XrdCl::FileStateHandler::ReadV(), XrdCl::PlugInManager::RegisterDefaultFactory(), XrdCl::PlugInManager::RegisterFactory(), XrdCl::TaskManager::RegisterTask(), XrdCl::InQueue::RemoveMessageHandler(), XrdCl::PollerBuiltIn::RemoveSocket(), XrdCl::ClassicCopyJob::Run(), XrdCl::ThirdPartyCopyJob::Run(), XrdCl::TPFallBackCopyJob::Run(), XrdCl::TaskManager::RunTasks(), XrdCl::FileStateHandler::SetXAttr(), XrdCl::JobManager::Start(), XrdCl::PollerBuiltIn::Start(), XrdCl::TaskManager::Start(), XrdCl::FileStateHandler::Stat(), XrdCl::LocalFileHandler::Stat(), XrdCl::JobManager::Stop(), XrdCl::PollerBuiltIn::Stop(), XrdCl::TaskManager::Stop(), XrdCl::FileStateHandler::Sync(), XrdCl::FileStateHandler::Truncate(), XrdCl::FileStateHandler::TryOtherServer(), XrdCl::TaskManager::UnregisterTask(), XrdCl::FileStateHandler::VectorRead(), XrdCl::FileStateHandler::VectorWrite(), XrdCl::FileStateHandler::Visa(), XrdCl::FileStateHandler::Write(), XrdCl::XRootDMsgHandler::WriteMessageBody(), and XrdCl::FileStateHandler::WriteV().

Here is the call graph for this function:
Here is the caller graph for this function:

## Dump()

void XrdCl::Log::Dump | ( | uint64_t | topic,
|  | const char * | format,
|  |  | ... )

Print a dump message.

Definition at line 299 of file XrdClLog.cc.

{
if( likely( GetLevel() < DumpMsg ) )
return;
if( unlikely( (topic & pMask[DumpMsg]) == 0 ) )
return;
va_list argList;
va_start( argList, format );
Say( DumpMsg, topic, format, argList );
va_end( argList );
}

References DumpMsg, GetLevel(), likely, Say, and unlikely.

Referenced by XrdCl::ZipArchive::AppendFile(), XrdCl::FileSystemData::AssignLastURL(), XrdCl::FileSystemData::AssignLoadBalancer(), XrdCl::ZipArchive::CloseArchive(), XrdCl::Stream::DisableIfEmpty(), XrdCl::PollerBuiltIn::EnableReadNotification(), XrdCl::PollerBuiltIn::EnableWriteNotification(), XrdCl::XRootDMsgHandler::Examine(), XrdCl::FSExecutor::Execute(), XrdCl::URL::FromString(), XrdCl::CheckSumManager::GetCalculator(), XrdCl::CheckSumHelper::GetCheckSum(), XrdCl::XRootDTransport::GetHeader(), XrdCl::Utils::GetLocalCheckSum(), XrdCl::Utils::GetRemoteCheckSum(), XrdCl::XRootDTransport::IsStreamBroken(), XrdCl::XRootDTransport::IsStreamTTLElapsed(), XrdCl::Utils::LogPropertyList(), main(), XrdCl::XRootDTransport::MessageReceived(), XrdCl::FileStateHandler::OnClose(), XrdCl::Stream::OnIncoming(), XrdCl::Stream::OnReadyToWrite(), XrdCl::FileStateHandler::OnStateError(), XrdCl::FileStateHandler::OnStateResponse(), XrdCl::XRootDMsgHandler::OnStatusReady(), XrdCl::XRootDMsgHandler::OnStreamEvent(), XrdCl::ZipArchive::OpenArchive(), XrdCl::ZipArchive::OpenFile(), XrdCl::XRootDMsgHandler::Process(), XrdCl::AsyncHSReader::Read(), XrdCl::AsyncMsgReader::Read(), XrdCl::AsyncVectorReader::Read(), XrdCl::ZipArchive::ReadFromImpl, XrdCl::MessageUtils::RedirectMessage(), XrdCl::TaskManager::RunTasks(), XrdCl::FileSystemData::Send(), XrdCl::Socket::Send(), XrdCl::Stream::Send(), XrdCl::MessageUtils::SendMessage(), XrdCl::FileStateHandler::TimeOutRequests(), and XrdCl::AsyncMsgWriter::Write().

Here is the call graph for this function:
Here is the caller graph for this function:

## Error()

void XrdCl::Log::Error | ( | uint64_t | topic,
|  | const char * | format,
|  |  | ... )

Report an error.

Definition at line 231 of file XrdClLog.cc.

{
if( unlikely( GetLevel() < ErrorMsg ) )
return;
if( unlikely( (topic & pMask[ErrorMsg]) == 0 ) )
return;
va_list argList;
va_start( argList, format );
Say( ErrorMsg, topic, format, argList );
va_end( argList );
}

References ErrorMsg, GetLevel(), Say, and unlikely.

Referenced by XrdCl::FileSystem::FileSystem(), xrdcl_proxy::ProxyFactory::ProxyFactory(), XrdCl::FSExecutor::AddCommand(), XrdCl::PollerBuiltIn::AddSocket(), XrdCl::CheckSumManager::Calculate(), XrdCl::Stream::CanCollapse(), XrdCl::Utils::CheckTPC(), XrdCl::Utils::CheckTPCLite(), XrdCl::LocalFileHandler::Close(), XrdCl::ZipArchive::CloseArchive(), XrdCl::PostMaster::CollapseRedirect(), XrdCl::AsyncSocketHandler::Connect(), XrdCl::Tls::Connect(), XrdCl::RecorderFactory::CreateFileSystem(), xrdcl_proxy::ProxyFactory::CreateFileSystem(), XrdCl::PollerFactory::CreatePoller(), XrdCl::XRootDTransport::Disconnect(), DoCache(), DoCat(), DoCD(), DoChMod(), DoLocate(), DoLS(), DoMkDir(), DoMv(), DoPrepare(), DoQuery(), DoRm(), DoRmDir(), DoSpaceInfo(), DoStat(), DoStatVFS(), DoTail(), DoTruncate(), DoXAttr(), XrdCl::Stream::EnableLink(), XrdCl::PollerBuiltIn::EnableReadNotification(), XrdCl::PollerBuiltIn::EnableWriteNotification(), XrdCl::FSExecutor::Execute(), XrdCl::URL::FromString(), XrdCl::CheckSumManager::GetCalculator(), XrdCl::Utils::GetHostAddresses(), XrdCl::Utils::GetLocalCheckSum(), XrdCl::DefaultEnv::GetMonitor(), XrdCl::XRootDTransport::GetMore(), XrdCl::AsyncSocketHandler::HandleHandShake(), XrdCl::XRootDTransport::HandShake(), XrdCl::XRootDTransport::HandShakeDone(), XrdCl::Env::ImportInt(), IndexRemote(), XrdCl::CheckSumHelper::Initialize(), XrdCl::XCpCtx::Initialize(), XrdCl::InitTLS(), XrdCl::XRootDMsgHandler::InspectStatusRsp(), XrdCl::XRootDTransport::IsStreamBroken(), XrdCl::XRootDTransport::IsStreamTTLElapsed(), XrdCl::XRootDTransport::LogErrorResponse(), main(), XrdCl::XRootDTransport::MessageReceived(), XrdCl::XRootDTransport::MultiplexSubStream(), XrdCl::XRootDTransport::NbConnectedStrm(), XrdCl::Stream::OnConnectError(), XrdCl::AsyncSocketHandler::OnConnectionReturn(), XrdCl::AsyncSocketHandler::OnFault(), XrdCl::AsyncSocketHandler::OnFaultWhileHandshaking(), XrdCl::FileStateHandler::OnStateError(), XrdCl::XRootDMsgHandler::OnStatusReady(), XrdCl::File::Open(), XrdCl::FileStateHandler::Open(), XrdCl::ZipArchive::OpenArchive(), XrdCl::XRootDMsgHandler::Process(), ProcessStatQuery(), XrdCl::AsyncDiscardReader::Read(), XrdCl::AsyncRawReader::Read(), XrdCl::AsyncVectorReader::Read(), XrdCl::LocalFileHandler::Read(), XrdCl::LocalFileHandler::ReadV(), XrdCl::MessageUtils::RedirectMessage(), XrdCl::PollerBuiltIn::RemoveSocket(), XrdCl::ClassicCopyJob::Run(), XrdCl::MessageUtils::SendMessage(), XrdCl::JobManager::Start(), XrdCl::PollerBuiltIn::Start(), XrdCl::TaskManager::Start(), XrdCl::LocalFileHandler::Stat(), XrdCl::JobManager::Stop(), XrdCl::PollerBuiltIn::Stop(), XrdCl::TaskManager::Stop(), XrdCl::XRootDTransport::SubStreamNumber(), XrdCl::LocalFileHandler::Sync(), XrdCl::LocalFileHandler::Truncate(), XrdCl::LocalFileHandler::VectorRead(), XrdCl::LocalFileHandler::VectorWrite(), XrdCl::AsyncHSWriter::Write(), XrdCl::AsyncMsgWriter::Write(), XrdCl::LocalFileHandler::Write(), and XrdCl::LocalFileHandler::WriteV().

Here is the call graph for this function:
Here is the caller graph for this function:

## GetLevel()

LogLevel XrdCl::Log::GetLevel | ( |  | ) | const

inline

Get the log level.

Definition at line 258 of file XrdClLog.hh.

{
LogLevel lvl = pLevel.load(std::memory_order_relaxed);
return lvl;
}
XrdCl::Log::LogLevel
LogLevel
Log levels.
Definition XrdClLog.hh:107

Referenced by Debug(), Dump(), Error(), XrdCl::URL::FromString(), XrdCl::XRootDTransport::GenerateDescription(), Info(), XrdCl::Utils::LogPropertyList(), main(), and Warning().

Here is the caller graph for this function:

## Info()

void XrdCl::Log::Info | ( | uint64_t | topic,
|  | const char * | format,
|  |  | ... )

Print an info.

Definition at line 265 of file XrdClLog.cc.

{
if( likely( GetLevel() < InfoMsg ) )
return;
if( unlikely( (topic & pMask[InfoMsg]) == 0 ) )
return;
va_list argList;
va_start( argList, format );
Say( InfoMsg, topic, format, argList );
va_end( argList );
}

References GetLevel(), InfoMsg, likely, Say, and unlikely.

Referenced by XrdCl::PostMaster::CollapseRedirect(), XrdCl::AsyncSocketHandler::DoTlsHandShake(), XrdCl::Env::ImportInt(), XrdCl::Env::ImportString(), IndexRemote(), XrdCl::Stream::OnConnectError(), XrdCl::FileStateHandler::PgWrite(), XrdCl::ClassicCopyJob::Run(), XrdCl::ThirdPartyCopyJob::Run(), and XrdCl::FileStateHandler::Write().

Here is the call graph for this function:
Here is the caller graph for this function:

## RegisterTopic()

uint64_t XrdCl::Log::RegisterTopic | ( | const std::string & | topic | ) |

inline

Register new topic.

Definition at line 248 of file XrdClLog.hh.

{
uint64_t tpcnb = pTopicMap.rbegin()->first << 1;
SetTopicName( tpcnb, topic );
return tpcnb;
}
XrdCl::Log::SetTopicName
void SetTopicName(uint64_t topic, std::string name)
Map a topic number to a string.
Definition XrdClLog.cc:163

References SetTopicName().

Here is the call graph for this function:

## Say()

void XrdCl::Log::Say | ( | LogLevel | level,
|  | uint64_t | topic,
|  | const char * | format,
|  | va_list | list )

Always print the message

Parameters

  level | log level
  topic | topic of the message
  format | format string - the same as in printf
  list | list of arguments

Definition at line 96 of file XrdClLog.cc.

{
//--------------------------------------------------------------------------
// Build the user message
//--------------------------------------------------------------------------
int size = 1024;
int ret = 0;
char *buffer = 0;
while(1)
{
va_list cp;
va_copy( cp, list );
buffer = new char[size];
ret = vsnprintf( buffer, size, format, cp );
va_end( cp );
if( ret < 0 )
{
snprintf( buffer, size, "Error while processing a log message \"%s\" \n", format);
pOutput->Write(buffer);
delete [] buffer;
return;
}
else if( ret < size )
break;
size *= 2;
delete [] buffer;
}
//--------------------------------------------------------------------------
// Add time and error level
//--------------------------------------------------------------------------
char now[48];
char ts[32];
char tz[8];
tm tsNow;
timeval ttNow;
gettimeofday( &ttNow, 0 );
localtime_r( &ttNow.tv_sec, &tsNow );
strftime( ts, 32, "%Y-%m-%d %H:%M:%S", &tsNow );
strftime( tz, 8, "%z", &tsNow );
snprintf( now, 48, "%s.%06ld %s", ts, (long int)ttNow.tv_usec, tz );
XrdOucTokenizer tok( buffer );
char *line = 0;
std::ostringstream out;
while( (line = tok.GetLine()) )
{
out << "[" << now << "][" << LogLevelToString( level ) << "]";
out << "[" << TopicToString( topic ) << "]";
if(pPid) out << "[" << std::setw(5) << pPid << "]";
out << " " << line << std::endl;
}
pOutput->Write( out.str() );
delete [] buffer;
}
ts
static std::string ts()
timestamp output for logging messages
Definition XrdCephOss.cc:53

References XrdOucTokenizer::GetLine(), and ts().

Here is the call graph for this function:

## SetLevel() [1/2]

void XrdCl::Log::SetLevel | ( | const std::string & | level | ) |

inline

Set the level of the messages that should be sent to the destination.

Definition at line 205 of file XrdClLog.hh.

{
LogLevel lvl;
if( StringToLogLevel( level, lvl ) )
SetLevel( lvl );
}
XrdCl::Log::SetLevel
void SetLevel(LogLevel level)
Set the level of the messages that should be sent to the destination.
Definition XrdClLog.hh:193

References SetLevel().

Here is the call graph for this function:

## SetLevel() [2/2]

void XrdCl::Log::SetLevel | ( | LogLevel | level | ) |

inline

Set the level of the messages that should be sent to the destination.

Definition at line 193 of file XrdClLog.hh.

{
#if __cplusplus >= 201103L
pLevel.store(level, std::memory_order_relaxed);
#else
pLevel = level;
#endif
}

Referenced by main(), SetLevel(), and XrdCl::DefaultEnv::SetLogLevel().

Here is the caller graph for this function:

## SetMask() [1/2]

void XrdCl::Log::SetMask | ( | const std::string & | level,
|  | uint64_t | mask )

inline

Sets the mask for the topics of messages that should be printed.

Definition at line 232 of file XrdClLog.hh.

{
LogLevel lvl;
if( StringToLogLevel( level, lvl ) )
pMask[lvl] = mask;
}

## SetMask() [2/2]

void XrdCl::Log::SetMask | ( | LogLevel | level,
|  | uint64_t | mask )

inline

Sets the mask for the topics of messages that should be printed.

Definition at line 224 of file XrdClLog.hh.

{
pMask[level] = mask;
}

Referenced by XrdCl::DefaultEnv::SetLogMask().

Here is the caller graph for this function:

## SetOutput()

void XrdCl::Log::SetOutput | ( | LogOut * | output | ) |

inline

Set the output that should be used.

Definition at line 215 of file XrdClLog.hh.

{
delete pOutput;
pOutput = output;
}

Referenced by XrdCl::DefaultEnv::SetLogFile(), and XrdSsiLogger::SetMCB().

Here is the caller graph for this function:

## SetPid()

void XrdCl::Log::SetPid | ( | pid_t | pid | ) |

inline

Set pid.

Definition at line 267 of file XrdClLog.hh.

{
pPid = pid;
}

Referenced by child(), and parent().

Here is the caller graph for this function:

## SetTopicName()

void XrdCl::Log::SetTopicName | ( | uint64_t | topic,
|  | std::string | name )

Map a topic number to a string.

Definition at line 163 of file XrdClLog.cc.

{
uint32_t len = name.length();
if( len > pTopicMaxLength )
{
pTopicMaxLength = len;
TopicMap::iterator it;
for( it = pTopicMap.begin(); it != pTopicMap.end(); ++it )
it->second.append( len-it->second.length(), ' ' );
}
else
name.append( pTopicMaxLength-len, ' ' );
pTopicMap[topic] = name;
}

Referenced by RegisterTopic(), and XrdCl::SetUpLogging().

Here is the caller graph for this function:

## Warning()

void XrdCl::Log::Warning | ( | uint64_t | topic,
|  | const char * | format,
|  |  | ... )

Report a warning.

Definition at line 248 of file XrdClLog.cc.

{
if( unlikely( GetLevel() < WarningMsg ) )
return;
if( unlikely( (topic & pMask[WarningMsg]) == 0 ) )
return;
va_list argList;
va_start( argList, format );
Say( WarningMsg, topic, format, argList );
va_end( argList );
}

References GetLevel(), Say, unlikely, and WarningMsg.

Referenced by XrdCl::PollerBuiltIn::AddSocket(), XrdCl::PollerBuiltIn::EnableReadNotification(), XrdCl::PollerBuiltIn::EnableWriteNotification(), XrdCl::XRootDMsgHandler::Examine(), XrdCl::ActionExecutor::Execute(), XrdCl::Stream::OnIncoming(), XrdCl::Stream::OnReadyToWrite(), XrdCl::FileStateHandler::PgWrite(), XrdCl::XRootDMsgHandler::Process(), XrdCl::ClassicCopyJob::Run(), and XrdCl::Stream::Send().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files:

- XrdClLog.hh
- XrdClLog.cc