美文网首页stata小小白
stata命令详解-log

stata命令详解-log

作者: Hobbit的理查德 | 来源:发表于2020-01-11 23:19 被阅读0次

    1. 前言

    在目前工作中,用stata清洗及分析数据,感觉很顺滑。无奈不少同学因为help文件里的英文望而却步。
    带着学习和分享的目的,根据工作经验,给大家整理一些常用以及不太常用但很有用的命令,并对该命令的help文件进行有侧重的详解。

    2. 命令及获取

    log:将输入及输出等过程内容(日志)保存到文件中,系统自带命令

    3. 描述

    • log及其子命令
    1. 能够打开,暂停或继续记录日志,检查记录日志状态(开启或关闭),关闭日志文件.
    2. 日志文件格式默认是Stata Markup and Control Language, SMCL,即.smcl文件扩展名,但也可以是.log文件扩展名,即纯文本(用记事本可以打开).
    3. 最多可以同时打开5个text日志.
    • cmdlog及其子命令
    1. log类似,但是,生成的命令日志只记录输入的内容,而且只能是.log文件扩展名,即纯文本(用记事本可以打开).
    2. 一次只能打开一个命令日志.
    • set logtypeset linesizse命令

    控制与日志相关的系统参数.

    4. 语法

    *报告日志文件的状态
    log
    log query [logname | _all]
    
    *生成并打开日志文件
    log using filename [, append replace [text|smcl] name(logname) nomsg]
    
    *关闭日志
    log close [logname | _all]
    
    *暂停或继续日志记录
    log off [logname]
    log on [logname]
    
    *报告命令日志文件
    cmdlog
    
    *生成并打开命令日志文件
    cmdlog using filename [, append replace]
    
    *关闭命令日志,暂停或继续命令日志记录
    cmdlog close
    cmdlog on
    cmdlog off
    
    *为日志文件设置文件类型
    set logtype text [, permanently]
    set logtype smcl [, permanently]
    
    *指定屏幕宽度
    set linesize #
    
    
    1. [,]:中括号里的为额外选项命令,按需求添加,而添加选项记得加英文逗号,

    2. [logname]:表示日志名称,注意不是日志文件名称

    5. 选项

    1. log usingcmdlog using命令选项:

    append:添加选项append,将产生的日志添加到已有日志文件中.如果日志不存在,则新增1个日志文件.

    replace:添加选项append,如果要生成或打开的日志文件(filename)已经存在,则已有文件会被覆盖.

    如果日志文件已经存在,但是不加appendreplace的话,会显示错误信息并且不会开始进行日志记录.

    2. log命令选项:

    textsmcl:添加选项text或smcl,表示指定日志文件的格式. 如果不添加选项或通过set logtype设定格式,则默认为smcl;如果统一所有日志文件为一种格式(text或smcl),可以通过set logtype设定;如果多个日志文件要不同格式,则通过添加选项text或smcl进行设定,此时会无视set logtype的设定.最短可以缩写成ts.

    name(logname):添加选项name,表示可以生成并打开一个日志文件,并对该日志进行自定义命名.不同日志文件可以有不同的日志名称,然后根据日志名称指定相应的日志进行关闭,暂停或继续操作.默认名称是<unnamed>.

    nomsg: 添加选项nomsg,可以把日志文件的默认的顶部和底部出现的日志名称,日志路径,日志类型,打开即关闭日期等信息隐藏.

    3. set logtype命令选项:

    permanently: 添加选项permanently后,无论是本次还是下次生成并打开的日志文件格式都设定好了.最短可以缩写成perm.

    6. 举例

    *生成并打开日志文件,文件在当前工作路径下,为mylog.smcl(默认)
    log using mylog
    
    *关闭当前日志并停止日志记录
    log close
    
    *将之后的日志添加到mylog.smcl(默认)文件中
    log using mylog, append
    
    *生成并打开日志文件,文件在当前工作路径下,为filename containing spaces.smcl(默认),注意:如果文件名包括空格,filename需要加""
    log using "filename containing spaces"
    
    *生成并打开日志文件,文件在当前工作路径下,为firstfile.log,而且,日志名称为log1
    log using firstfile, name(log1) text
    
    *生成并打开日志文件,文件在当前工作路径下,为secondfile.smcl,而且,日志名称为log2
    log using secondfile, name(log2) smcl
    
    *生成并打开日志文件,文件在当前工作路径下,为secondfile.smcl,而且,日志名称为log2
    log using thirdfile, name(log3) smcl
    
    *查询日志文件的状态(打开或关闭)
    log query _all
    
    *关闭日志名称为log1的日志文件
    log close log1
    
    *关闭当前日志并停止日志记录
    log close _all
    

    7. 菜单

    File > Log

    文件>日志

    8. 存储的结果

    logcmdlog命令存储以下暂元:

    r(name): 日志名称(logname)

    r(filename):日志文件名称

    r(status):日志打开或关闭状态

    r(type):日志文件的格式:smcl或text

    log query_all命令存储以下单量:

    r(numlogs):打开的日志文件数量

    对每个打开的日志文件,log query_all也存储暂元:

    r(name#):具体第#个日志的日志名称(logname)

    r(filename#):具体第#个日志的日志文件名称

    r(status#):具体第#个日志的日志打开或关闭状态

    r(type#):具体第#个日志的日志文件的格式:smcl或text

    PS: # 取值范围是1-r(numlogs)的值(即打开的日志文件数量).注意,当打开日志文件数量不同的时候,#对应的日志并非保持不变,而且,不一定按照打开顺序,具体看吧.

    9. 补充

    • 日志文件顶部和底部默认信息演示
    *输入下面语法
    log using mylog
    sysuse auto,clear
    sum price
    log close
    

    得到以下日志文件,红框内为默认信息:


    日志信息.png
    *输入下面语法
    log using mylog_nomsg,nomsg
    sysuse auto,clear
    sum price
    log close
    

    得到以下日志文件,无日志信息:


    无日志信息.png

    相关文章

      网友评论

        本文标题:stata命令详解-log

        本文链接:https://www.haomeiwen.com/subject/vszbactx.html