stata小小白

stata命令详解-log

2020-01-11  本文已影响0人  Hobbit的理查德

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
上一篇下一篇

猜你喜欢

热点阅读