Запись в текстовый файл (логгирование)

  • Автор темы Автор темы dim4an
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

dim4an

Участник
Топикстартер
Сообщения
93
Реакции
1
Всем привет. Пытаюсь реализовать логгирование в IDS.
Код:
function Log(){
}
 
Log.prototype = {
 
    createFileLog: function (logName) {
        var fName = logName == undefined ? app.activeScript.displayName : logName;
        var date = new Date();
        logFile = new File( "C:/InDesignServer log/" + fName + "_" + String(date) + ".txt");
    },
    write: function (message) {
        var date = new Date();
        if (!logFile.exists) {
            logFile.open("w");
            logFile.write(String(date) + "\nLogging:\n");
            logFile.close();
            alert("´fine is not found")
        }
        alert(logFile.fullName);
        logFile.open("e");
      //  logFile.seek(0, 2);
        logFile.write("\n" + String(date) + ": " + message);
        app.consoleout(message);
        logFile.close();
    }
}
 
log = new Log();
log.write("привет!");
Код исправно работает, но есть одна проблема. Файл создается не по тому пути. (Есть подозрение, что он просто находится в памяти, во время выполнения приложения.)
alert(logFile.fullName) возвращает следующее "/c/InDesignServer log/filename.txt".
Не могу разобраться, что за странная директория "/c/" и как сохранить фаил по пути "C:/InDesignServer log/.".
Спасибо за внимание.
 
попробуйте fsName вместо fullName

а путь нормальный, по идее

>/filename.txt

а куда _ и дата подевались?
 
  • Спасибо
Реакции: dim4an
Не могу разобраться, что за странная директория "/c/" и как сохранить фаил по пути "C:/InDesignServer log/.".
Поскольку ID, в том числе и сервер, работают с POSIX-совместимой записью имен файлов, то /с/ — это имя тома или диска.
Вот тут есть кое-какие краткие сведения: http://adobescripts.wordpress.com/2006/12/18/think-js-№08/
 
  • Спасибо
Реакции: dim4an
попробуйте fsName вместо fullName

а путь нормальный, по идее

>/filename.txt

а куда _ и дата подевались?

да, разобрался. Путь и правда нормальный. "filename.txt" потому что, полное название файла очень большое :)
 
Поскольку ID, в том числе и сервер, работают с POSIX-совместимой записью имен файлов, то /с/ — это имя тома или диска.
Вот тут есть кое-какие краткие сведения: http://adobescripts.wordpress.com/2006/12/18/think-js-№08/

спасибо за ссылку, есть очень много (для меня) полезной информации
 
Нашел я в чем была проблема. Я в имя файла подавал дату, а в формате даты были символы ":", что недопустимо.
Работающий код :)
Код:
function Log() {
    this.logFile;
}
 
Log.prototype = {
 
    createFileLog: function (logName) {
        var fName = logName == undefined ? app.activeScript.displayName : logName;
        var date = new Date();
        var dateStr = date.toString().replace(/:/g,".");
        alert(date);
        this.logFile = new File("C:/IDS logs/" + fName + "_" + dateStr + ".txt");
        try {
            this.logFile.open("w");
            this.logFile.write("Logging:\n");
            this.logFile.close();
        } catch (error) {
            app.consoleout(error);
        }
    },
    write: function (message) {
        var date = new Date();
        this.logFile.open("e");
        this.logFile.seek(0, 2);
        this.logFile.write("\n" + String(date) + ": " + message);
        app.consoleout(message);
        this.logFile.close();
    }
}
 
var log = new Log();
log.createFileLog();
log.write("привет!");
 
Статус
Закрыто для дальнейших ответов.