momijigari
momijigari

Reputation: 1598

How to write logs data in a local txt file?

I have an AIR-app and I want it to write down logs to a txt file in its application directory.

I have this class:

public class Logger 
    {


        public static function log(message:String):void
        {
            var logFile:File = File.applicationDirectory;
            logFile          = logFile.resolvePath("log/Logs.txt");

            var fileStream:FileStream = new FileStream();
            fileStream.open(logFile, FileMode.APPEND);

            fileStream.writeUTFBytes("\n" + message);

            fileStream.close();
        }

    }

}

After installation my app has this file structure

log

--Logs.txt

META-INF

xml

airapp.exe

airapp.swf

mimetype

So the path I'm using is correct. But no writes happen to the file! Could you help me with that please? Thanks

Upd. Ok, I'm stupid. I should have read documentation properly first. You cannot edit data in application directory.

So I should use applicationStorageDirectory.

But how can I create a file in that directory once (on app installation) and then append logs in it?

Upvotes: 0

Views: 366

Answers (3)

gaurav_gupta
gaurav_gupta

Reputation: 61

If you want the real log than you should use third party installer rather than native run time of adobe air. Try Wixedit(opensource) or install aware .

You have to export your project into captive run time format that is provided in flash builder.

try this link

http://www.adobe.com/devnet/air/articles/customize-setup-for-AIR-app-with-captive-runtime.html

Upvotes: 1

adarshk
adarshk

Reputation: 338

Try the following....

function saveLog(logStr:String):void
 {


   var myFile:File = File.applicationStorageDirectory.resolvePath("my_logs.txt");
    var fs:FileStream = new FileStream();
    if(!myFile.exists){

     fs.open(myFile, FileMode.WRITE);
    }
    else{ 
     fs.open(myFile, FileMode.APPEND);
    }
    fs.writeUTFBytes("\n" + logStr);
    fs.close();
}

call this function on creation complete and then from where to add logs.

Upvotes: 1

gabriel
gabriel

Reputation: 2359

Try something like:

 function saveLog(content:String):void
 {
    var data:ByteArray = new ByteArray();
    data.writeMultiByte(content, "utf-8");
    file.save(data, "Logs.txt");
 }

 saveLog('testing :)');

To open and edit your log file, try to follow this tutorial

Upvotes: 0

Related Questions