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

第二人生的源码分析(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的基本功能分析完成了,至于更多详细的写文件功能、输出到调试窗口功能,以后再作详细地分析。
分享到:
评论

相关推荐

    secondlife源码分析(pdf版)

    2. **第二人生的基本功能** - 这是对SecondLife基本操作的概述,包括创建虚拟形象、探索虚拟世界等功能。 3. **程序入口点** - 分析了SecondLife程序的入口点,即主函数(`main`函数)是如何组织和初始化各个组件的...

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

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

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

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

    c# 4.0新特性一览

    表达树可以表示代码结构,便于在运行时分析和执行,常用于 LINQ 查询和其他动态场景。 **动态调度和调用站点缓存(Dynamic Dispatch and Call Site Caching)** 在C# 4.0中,动态方法调用会进行动态调度,这意味着...

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

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

    09JVM是怎么实现invokedynamic的?(下)1

    它通过调用点(CallSite)与启动方法(BootstrapMethod)两个概念来实现这一功能。 2. **调用点(CallSite)** 调用点是invokedynamic指令的核心,它是一个Java类的实例,负责存储和管理方法调用的信息。每次...

    c# IL反编译

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

    执行篇:解析JDK 7的动态类型语言支持

    这些类提供了创建和操作调用点的方法,而引导方法则可以通过`java.lang.invoke.CallSite`接口和相关的`LambdaMetafactory`进行定义。 至于`.classpath`和`.project`文件,它们是Eclipse IDE的项目配置文件,分别...

    Java方法句柄1

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

    ILSpy反编译工具.zip

    它支持反编译C#和VB.NET,生成的代码接近原始源代码的可读性,使得代码分析更加直观。 **调试支持** ILSpy不仅是一个反编译器,还提供了一个内置的调试器。这使得用户可以在反编译的代码中设置断点,进行单步调试。...

    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...

    MYSQL常用命令 和SQL语句(方言dialect)

    MYSQL常用命令 和SQL语句(方言dialect)

    针对Change Set 32648而更新的荒井省三的简单DLR语言例子

    通过查看MyCalc的源码,我们可以深入学习DLR的内部机制,包括如何使用`CallSite`、`DynamicMetaObject`等类进行动态绑定,以及如何实现动态语言的关键特性。这对于想要在.NET环境中开发自己的动态语言或者增强现有...

    log4j详解.pdf

    TTCCLayout是指Time, Thread, Categroy and Callsite Layout,即输出时间、线程名、日志类别和调用位置。 ##### 2.4 输出结果 运行测试类后,可以看到如下输出结果: ``` [main] DEBUG ...

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

    在JavaScript编程中,...总之,利用JavaScript的Proxy对象可以实现对对象更改调用点的精确追踪,这对于调试、日志记录和性能分析都有很大帮助。了解并熟练掌握这一技术,对于提升JavaScript开发能力是十分有益的。

    TestWebProject.rar

    要实现日志功能,C#开发者通常会使用第三方的日志库,如NLog、log4net或者Serilog。这些库提供了丰富的功能,如日志级别控制(Debug、Info、Warning、Error、Fatal),日志目标配置(文件、数据库、控制台、邮件等)...

    NLog路由规则和上下文信息知识点总结

    第一条规则将所有级别等于或高于Debug的日志事件发送到`debugger`目标,而第二条规则将所有Error级别的日志事件发送到`error_file`目标。`name`属性可以使用通配符`*`来匹配所有日志源。`minlevel`和`maxlevel`用于...

Global site tag (gtag.js) - Google Analytics