stata命令详解-log
1. 前言
在目前工作中,用stata清洗及分析数据,感觉很顺滑。无奈不少同学因为help文件里的英文望而却步。
带着学习和分享的目的,根据工作经验,给大家整理一些常用以及不太常用但很有用的命令,并对该命令的help文件进行有侧重的详解。
2. 命令及获取
log
:将输入及输出等过程内容(日志)保存到文件中,系统自带命令
3. 描述
log
及其子命令
- 能够打开,暂停或继续记录日志,检查记录日志状态(开启或关闭),关闭日志文件.
- 日志文件格式默认是Stata Markup and Control Language, SMCL,即.smcl文件扩展名,但也可以是.log文件扩展名,即纯文本(用记事本可以打开).
- 最多可以同时打开5个text日志.
cmdlog
及其子命令
- 和
log
类似,但是,生成的命令日志只记录输入的内容,而且只能是.log文件扩展名,即纯文本(用记事本可以打开).- 一次只能打开一个命令日志.
set logtype
和set 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 #
[,]:中括号里的为额外选项命令,按需求添加,而添加选项记得加英文逗号,
[logname]:表示日志名称,注意不是日志文件名称
5. 选项
1.
log using
和cmdlog using
命令选项:
append
:添加选项append,将产生的日志添加到已有日志文件中.如果日志不存在,则新增1个日志文件.
replace
:添加选项append,如果要生成或打开的日志文件(filename)已经存在,则已有文件会被覆盖.如果日志文件已经存在,但是不加
append
或replace
的话,会显示错误信息并且不会开始进行日志记录.2.
log
命令选项:
text
和smcl
:添加选项text或smcl,表示指定日志文件的格式. 如果不添加选项或通过set logtype
设定格式,则默认为smcl;如果统一所有日志文件为一种格式(text或smcl),可以通过set logtype
设定;如果多个日志文件要不同格式,则通过添加选项text或smcl进行设定,此时会无视set logtype
的设定.最短可以缩写成t
和s
.
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. 存储的结果
log
和cmdlog
命令存储以下暂元:
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或textPS: # 取值范围是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