VB6-AppendToLog 通过API写入日志
工作中免不了需要为自己的程序添加日志,我也从网上扒拉了一个老外写的模块,修改修改了下,凑合用吧。
Option Explicit
'**************************************
' 模块名称: AppendToLog 通过API写入日志
'**************************************
'API 声明
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const Create_NEW =
Private Const OPEN_EXISTING =
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_BEGIN =
Private Const INVALID_HANDLE_VALUE = -
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '调用:Call AppendToLog("测试模块名","测试日志内容")
'**************************************
' 方法名称: AppendToLog
' 输入参数:sMdl 模块名称 sMessage 日志内容
'**************************************
Public Sub AppendToLog(sMdl As String, sMessage As String) On Error GoTo Err: '获取计算机名、用户名、本机ip
Dim LocalInfo As String
Dim strLocalIP As String
Dim winIP As Object
LocalInfo = LocalInfo & " Computer:" & Environ("computername")
LocalInfo = LocalInfo & " User:" & Environ("username")
Set winIP = CreateObject("MSWinsock.Winsock")
strLocalIP = winIP.LocalIP
LocalInfo = LocalInfo & " IP:" & strLocalIP Dim lpFileName As String
lpFileName = App.Path + "\Log"
If Dir(lpFileName, vbDirectory) = "" Then
MkDir (lpFileName)
End If lpFileName = lpFileName + "\" + Format(Now, "yyyymmdd") + ".log" sMessage = "--" + Format(Now, "yyyy-mm-dd hh:mm:ss") + " 模块:" + sMdl + LocalInfo + vbNewLine + sMessage + vbNewLine
'appends a string to a text file.
'it's up to the coder to add a CR/LF at the end
'of the string if (s)he so desires.
'assume failure
'AppendToLog = False
'exit if the string cannot be written to disk
If Len(sMessage) < Then Exit Sub
'get the size of the file (if it exists)
Dim fLen As Long: fLen =
If (Len(Dir(lpFileName))) Then: fLen = FileLen(lpFileName)
'open the log file, create as necessary
Dim hLogFile As Long
hLogFile = CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_READ, ByVal &, _
IIf(Len(Dir(lpFileName)), OPEN_EXISTING, Create_NEW), _
FILE_ATTRIBUTE_NORMAL, &)
'ensure the log file was opened properly
If (hLogFile = INVALID_HANDLE_VALUE) Then Exit Sub
'move file pointer to end of file if file was not created
If (fLen <> ) Then
If (SetFilePointer(hLogFile, fLen, ByVal &, FILE_BEGIN) = &HFFFFFFFF) Then
'exit sub if the pointer did not set correctly
CloseHandle (hLogFile)
Exit Sub
End If
End If
'convert the source string to a byte array for use with WriteFile
Dim lTemp As Long
ReDim TempArray( To Len(sMessage) - ) As Byte
TempArray = StrConv(sMessage, vbFromUnicode)
lTemp = UBound(TempArray) +
'write the string to the log file
If (WriteFile(hLogFile, TempArray(), lTemp, lTemp, ByVal &) <> ) Then
'the data was written correctly
'AppendToLog = True
End If
'flush buffers and close the file
FlushFileBuffers (hLogFile)
CloseHandle (hLogFile)
Exit Sub
Err:
MsgBox "日志写入出错,原因是" + Err.Description, vbExclamation, "提示信息" End Sub
VB6-AppendToLog 通过API写入日志的更多相关文章
- 如何给框架添加API接口日志
前言 用的公司的框架,是MVC框架,看了下里面的日志基类,是操作日志,对增删改进行记录, 夸张的是一张业务的数据表 需要一张专门的日志表进行记录, 就是说你写个更新,添加的方法都必须写一遍操作日志,代 ...
- java--何时处理Exception(哪一个层级),包装的基础类处理任务尽可能简洁,写入日志,检查null等运行时异常
1. 运行时异常和受检异常 2. 提前预防运行时异常.最常发生的是NPE,而检查NPE是程序员的基本职责.其他的,如除0等运行时异常的检查,需要程序员仔细检查,每个函数都得检查(除非可以确定不会有空指 ...
- 获取Android崩溃crash信息并写入日志发送邮件
一.实现Thread.UncaughtExceptionHandlerUnChecked异常发生时,由于没有相应的try…catch处理该异常对象,所以Java运行环境将会终止,程序将退出,也就是我们 ...
- 【.net 深呼吸】写入日志文件
记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...
- JS写入日志
try { var WSShell = WScript.CreateObject("WScript.Shell"); var FileSys = WScript.CreateObj ...
- log4Net(写入日志文件)
这里就简单介绍下log4Net对写入日志文件的一些了解,写入数据库类似,就不在一一介绍了. 首先去log4net下载. 然后我们新建一个控制台应用程序,并引入log4net.dll程序集,log4ne ...
- InfluxDB学习之InfluxDB的HTTP API写入操作
HTTP API也有两种操作:写入和查询,本文就先给大家介绍一下 InfluxDB的HTTP API的写入操作方式. 在InfluxDB学习的上一篇文章:InfluxDB学习之InfluxDB ...
- C#向文本文件中写入日志
今天看了一篇文章,说的是使用微软自带的日志类写日志,然后晚上我就花了2个多小时自己动手试了一下,然后模仿者自己封装了一个类库. 下面是自己封转的类: /***** * 创建人:金河 * 创建日期:20 ...
- logback异步输出日志(生产者消费者模型),并非批量写入日志。
一直对logback异步输出日志误解为异步批量写入日志. 今天看了源代码. 首先logback的异步日志是如何配置的: <!-- 管理端用户行为日志异步输出,异步的log片段必须在同步段后面,否 ...
随机推荐
- hive-初看hive
网上搜了一下找了很多介绍hive的资料,不是官方翻译就是含糊描述,对于刚接触的很难直观认识 我从一本介绍hadoop的书里找到了一些hive的资料,没太多废话.可以看看 http://pan.baid ...
- Cable master
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- iptables常用命令
常规: iptables -t filter -A INPUT -d -p tcp --dport -j DROPiptables -A INPUT -m iprange --src-range 22 ...
- LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。
var data = DataSource.Skip(iDisplayStart).Take(iDisplayLength).Select(o => new { MatNR = o.MatNR, ...
- Syntax highlighter for CKEditor
http://www.cnblogs.com/moozi/archive/2010/01/06/1640034.html
- jquery 实现图片跳动。提示作用
需要做几件事: 第一:样式表定义 .red { border: 2px solid #ffffff; } 第二:定义抖动函数 function shake(ele, cls, times) { var ...
- 【路径寻找问题】UVa 10603 - Fill
如家大神书上的例题.第一次接触也是按代码敲得.敲的过程感觉很直观.但自己写估计会写的乱七八糟.以后不能砍得难就不愿意做这种题.否则只能做一些水题了.(PS:48) 紫书 #include<ios ...
- 20个2014年最优秀的PHP框架
http://www.php100.com/html/it/mobile/2014/0813/7198.htmlhttp://medoo.in/api/select
- javascript事件学习笔记
事件冒泡 并不是所有的事件都支持事件冒泡,比如submit ,focus,blur不支持事件冒泡,mouseover,mouseout虽然支持冒泡,但是一般不用,因为需要经常计算元素的位置,消耗比较大 ...
- windows编程socket问题
今天调试了个MFC网络程序,被bug困扰了一天,终于在收工前解决了. 大致是这样的,我们需要用上位机远程控制机器车前行.上位机上的MFC app的键盘按键响应如下:当按键按下时,系统会发送一个消息给a ...