您需要在本地创建一个文件夹,并访问该文件夹才能将日志写入其中。请尝试以下更改:

public var logFileName:String = '';
public var logFilePath:String = '';
public var logStr:String = '';
public var fileRef:FileReference;

public function WriteTextLog(organBM:String, action:String, strMessage:String):void {
    // 构造日志文件名,包含当前日期
    var today:String = mx.controls.DateField.dateToString(new Date(), 'YYYY-MM-DD');
    now:String = mx.controls.DateField.dateToString(new Date(), 'YYYY-MM-DD HH:mm:ss');
    logFileName = 'log_' + today + '.txt';
    // 构造日志文件路径
    logFilePath = File.applicationStorageDirectory.resolvePath(organBM + '/' + logFileName).nativePath;
    // 构造日志内容
    fileRef = new FileReference();
    logStr = 'Time: ' + now + '\r\n';
    if (action != '') {
        logStr += 'Action: ' + action + '\r\n';
    }
    if (strMessage != '') {
        logStr += 'Message: ' + strMessage + '\r\n';
    }
    logStr += '-----------------------------------------------------------\r\n\r\n';

    // 创建或打开日志文件
    var folder:File = File.applicationStorageDirectory.resolvePath(organBM);
    if (!folder.exists) {
        folder.createDirectory();
    }
    fileRef.addEventListener(Event.SELECT, onSelect);
    fileRef.addEventListener(Event.COMPLETE, onComplete);
    fileRef.addEventListener(flash.events.ErrorEvent.ERROR, onError);
    fileRef.browseForSave('Save As');
}

function onSelect(e:Event):void {
    fileRef.save(logStr, logFilePath);
}

function onComplete(e:Event):void {
    trace('Log saved successfully.');
}

function onError(e:Event):void {
    trace('An error occurred.');
}

这里,我们使用了File.applicationStorageDirectory来创建一个文件夹,并将日志文件保存在其中。然后,我们通过fileRef.browseForSave('Save As')来让用户选择保存文件的位置和文件名。最后,我们将日志写入所选的文件中。

Flex 中日志写入问题:无法创建日志文件,代码修改方案

原文地址: https://www.cveoy.top/t/topic/oNJe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录