`
yuanjinxiu
  • 浏览: 665732 次
文章分类
社区版块
存档分类
最新评论

第二人生的源码分析(6)类CallSite的实现

 
阅读更多
CallSite提供了保存一行Log的信息,以便保存所有的LOG到容器里,方便管理以及输出到文件,同时输出到其它需要输出的界面。使用这个类是先调类CallSite的构造函数来保存Log所在的函数名称、类名称、文件名称和行号,还有是否需要输出Log等信息,接着就保存在类Log里保存到全局的容器里。它的代码如下:
#001namespace LLError
#002{
#003CallSite::CallSite(ELevel level,
#004 const char* file, int line,
#005 const std::type_info& class_info, const char* function)
#006 : mLevel(level), mFile(file), mLine(line),
#007 mClassInfo(class_info), mFunction(function),
#008 mCached(false), mShouldLog(false)
#009 { }
#010
#011
#012void CallSite::invalidate()
#013 { mCached = false; }
#014}
其实类CallSite是用来表示一次输出Log的对象,类Log是相当于容器类,并且管理着所有CallSite类对象。到这里,就把Log的基本功能分析完成了,至于更多详细的写文件功能、输出到调试窗口功能,以后再作详细地分析。
分享到:
评论

相关推荐

    caller-callsite:获取呼叫者功能的呼叫站点

    $ npm install caller-callsite 用法 // foo.js const callerCallsite = require ( 'caller-callsite' ) ; module . exports = ( ) => { console . log ( callerCallsite ( ) . getFileName ( ) ) ; //=> '/Users/...

    callsite-record:为错误和函数调用站点创建奇特的日志条目

    const createCallsiteRecord = require ( 'callsite-record' ) ; function myFunc ( ) { throw new Error ( 'Yo!' ) ; } try { myFunc ( ) ; } catch ( err ) { console . log ( createCallsiteRecord ( { ...

    c# 4.0新特性一览

    c# 4.0新特性一览PPT c# 4.0新特性一览PPT

    node-stack-trace:获取v8堆栈跟踪作为CallSite对象的数组

    获取v8堆栈跟踪作为CallSite对象的数组。 安装 npm install stack-trace 用法 堆栈跟踪模块使您可以轻松捕获当前堆栈: var stackTrace = require ( 'stack-trace' ) ; var trace = stackTrace . get ( ) ; ...

    c# IL反编译

    c#专用反编译工具,查看IL代码!

    Java方法句柄1

    最后,`CallSite`的`dynamicInvoker()`方法用于执行`InvokeDynamic`指令,这在测试或动态语言实现中非常有用。 如果你想在字节码级别操作这些概念,如生成或修改字节码,可以使用ASM库。ASM是一个强大的Java字节码...

    ILSpy反编译工具.zip

    能够对C#程序进行反编译操作,同时在反编译过程中可以断点调试包括但不调试等,也包含监视功能,在调试过程中可以监视变量数值。

    Java中invokedynamic字节码指令问题

    我们定义了一个接口Encode,其中有一个方法encode(),然后我们定义了两个类Base和Derive,Base类中有一个方法encrypt(),Derive类继承自Base类,并重写了encrypt()方法。在main方法中,我们使用了invokedynamic指令...

    .Net Core2.1+NLog

    <parameter name="@callSite" layout="${callsite:filename=true}" /> ${exception:tostring}" /> <!--Skip Microsoft logs and so log only own logs--> *" minlevel="Trace" writeTo="blackhole...

    objectchangecallsite使用代理确定对象更改的调用点

    object-change-callsite 使用代理确定对象更改的调用点

    timeit:命令执行时间表

    时间 命令执行时间表允许配置多个方案以通过CLI应用程序运行基准测试,输出可在markdown... " name " : " Callsite " , " environmentVariables " : { " DD_TRACE_CALLTARGET_ENABLED " : " false " , " DD_CLR_ENA

    autowire:Scala应用程序(包括ScalaJSScalaJVM)之间用于simplesafe RPC的宏

    汽车线0.3.3 Autowire是一对宏,使您可以在Scala系统之间执行类型安全,无反射的RPC。 Autowire允许您编写类型安全的Ajax / RPC调用,如下所示: ...// client-side callsite import autowire . _ // needed for

    callsites:从V8堆栈跟踪API获取呼叫站点

    原料药使用以下方法返回一个Callsite对象数组: getThis :返回this的值。 getTypeName :返回的类型, this是一个字符串。 这是存储在this的构造器字段中的函数的名称(如果有),否则为对象的[[Class]]内部属性。 ...

    C# Dynamic关键字之:dynamic为什么比反射快的详解

    在上面的代码片段中,我们看到使用Reflector反编译后的代码,充满了`CallSite`和`Binder`对象,这是反射实现的一部分。这些对象在运行时创建并用于动态地调用`Console.WriteLine`方法。反射的这种工作方式导致了大量...

Global site tag (gtag.js) - Google Analytics