Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wohin mit den Logfiles? (https://www.delphipraxis.net/100933-wohin-mit-den-logfiles.html)

ralfiii 5. Okt 2007 16:21


Wohin mit den Logfiles?
 
Wieder mal "Umstellung auf Vista"

Plötzlich dürfen meine Applikationen ihre Logfile nicht mehr im Programmverzeichnis ablegen.
(Schade, fand ich nett)
Nur: Wo soll man die sinnvollerweise hintun?

C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\AppName\Logs ?
C:\Dokumente und Einstellungen\Username\Eigene Dateien\irgendwas ?
C:\Programme\Gemeinsame Dateien\irgendwas ?

Gibt's da Empfehlungen?

Vielen Dank,
Ralf

Phoenix 5. Okt 2007 16:27

Re: Wohin mit den Logfiles?
 
Nicht nur plötzlich. Würde man unter XP nicht immer mit Adminrechten arbeiten wäre das da schon schief gegangen. ;-)

Hrm. Logfiles... was wird denn da Protokolliert?
GGf. wäre das Temporäre Systemverzeichnis der richtige Platz. Ansonsten im Userverzeichnis unter Appdata. Ist auch naheliegend. Weniger unter Eigene Dateien, weil die ja wahrscheinlich nicht explizit vom Benutzer abgelegt werden und ich würde mich mit einer Deinstallation bedanken wenn eine Anwendung meine Folder zuspammen würde.

Matze 5. Okt 2007 16:29

Re: Wohin mit den Logfiles?
 
Hallo, normalerweise gehören sie nach C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\AppNa me\ Natürlich um Unterordner erweiterbar. Sollten die Einstellungen für alle Benutzer gelten, dann natürlich "AllUsers".

Bin mir nicht ganz sicher, ob's unter Vista auch so ist, denke aber schon. ;)

sakura 5. Okt 2007 16:33

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von Matze
Sollten die Einstellungen für alle Benutzer gelten, dann natürlich "AllUsers".

Wie schon mehrfach bemerkt (ist in XP und Vista gleich), können alle User die Dateien in AllUsers lesen, aber ändern kann nur der User die Dateien, der diese auch erstellt hat (wenn diese keine Admins sind/Adminrechte haben).

...:cat:...

Bernhard Geyer 5. Okt 2007 16:51

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von Phoenix
Nicht nur plötzlich. Würde man unter XP nicht immer mit Adminrechten arbeiten wäre das da schon schief gegangen. ;-)

AFAIK schon ab Windows NT/2000 wenn man nur Benutzer und nicht Hauptbenutzer ist.

xaromz 5. Okt 2007 17:07

Re: Wohin mit den Logfiles?
 
Hallo,

Log-Dateien sollten normalerweise nicht einfach in den APPDATA-Ordner, sondern in den lokalen APPDATA-Ordner, unter Vista also "C:\Users\<UserName>\AppData\Local". Sonst werden sie möglicherweise auf dem Server gespeichert und bei jedem Anmelden über's Netzwerk geladen (Domäne, zentrale Nutzerverwaltung).

Gruß
xaromz

RavenIV 5. Okt 2007 17:11

Re: Wohin mit den Logfiles?
 
Also ich würde sie hier hin legen:

C:\Dokumente und Einstellungen\Username\Anwendungsdaten\AppName\Log s

Es gibt eine API-Funktion, mit der Du das User-Verzeichnis herausfinden kannst.
Ich glaube sogar für User-Appdata gibt es auch eine.

ralfiii 8. Okt 2007 09:16

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von Phoenix
Hrm. Logfiles... was wird denn da Protokolliert?
GGf. wäre das Temporäre Systemverzeichnis der richtige Platz. Ansonsten im Userverzeichnis unter Appdata.

Die Logfiles sind im wesentlichen Info-files die ein User an uns mailt wenn irgendwas schiefgelaufen ist. Es sind keine wichtigen persönlichen Daten drin.

Temp klingt gut.

RWarnecke 8. Okt 2007 09:22

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von RavenIV
Also ich würde sie hier hin legen:

C:\Dokumente und Einstellungen\Username\Anwendungsdaten\AppName\Log s

Es gibt eine API-Funktion, mit der Du das User-Verzeichnis herausfinden kannst.
Ich glaube sogar für User-Appdata gibt es auch eine.

Warum so umständlich, man nehme einfach die Systemvariable %APPDATA% ist seit Windows 2000 immer der gleiche Pfad. Auch bei anderen Sprachen.

OregonGhost 8. Okt 2007 09:30

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von RavenIV
Also ich würde sie hier hin legen:

C:\Dokumente und Einstellungen\Username\Anwendungsdaten\AppName\Log s

Es gibt eine API-Funktion, mit der Du das User-Verzeichnis herausfinden kannst.
Ich glaube sogar für User-Appdata gibt es auch eine.

Warum so umständlich, man nehme einfach die Systemvariable %APPDATA% ist seit Windows 2000 immer der gleiche Pfad. Auch bei anderen Sprachen.

Wenn ich der Ausgabe von SET trauen darf, wird %APPDATA% bei mir weitergeleitet auf: C:\Users\<Benutzername>\AppData\Roaming.
Roaming ist doch gerade das, wo die alten Anwendungen landen, oder? Ist das das, was man will? Oder ist das vom Manifest abhängig?

ralfiii 8. Okt 2007 09:40

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von RavenIV
Also ich würde sie hier hin legen:

C:\Dokumente und Einstellungen\Username\Anwendungsdaten\AppName\Log s

Es gibt eine API-Funktion, mit der Du das User-Verzeichnis herausfinden kannst.
Ich glaube sogar für User-Appdata gibt es auch eine.

Warum so umständlich, man nehme einfach die Systemvariable %APPDATA% ist seit Windows 2000 immer der gleiche Pfad. Auch bei anderen Sprachen.

@RavenIV:
Delphi-Quellcode:
var path : array[0..MAX_PATH] of char;
  SHGetFolderPath(0, CSIDL_Common_AppData, 1,0, @path[0]);
  SHGetFolderPath(0, CSIDL_Personal, 1,0, @path[0]);
  SHGetFolderPath(0, CSIDL_PROGRAM_FILES_COMMON, 1,0, @path[0]);
@RWarnecke: Und, wie verwende ich die Systemvariable? Ein AssignFile('%Temp%\MyLogfile.log') geht ja nicht.

However, ich schreib's jetzt in's Temp-Verzeichnis, dass ich mit
GetTempPath(MAX_PATH, path);
bestimme.

Danke für eure Anregungen!

RWarnecke 8. Okt 2007 09:55

Re: Wohin mit den Logfiles?
 
Zitat:

Zitat von ralfiii
@RWarnecke: Und, wie verwende ich die Systemvariable? Ein AssignFile('%Temp%\MyLogfile.log') geht ja nicht.

Mit dieser Funktion liest Du Systemvariablen aus :
Delphi-Quellcode:
function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer; // buffer size required for value
begin
  // Get required buffer size (inc. terminal #0)
  BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
  if BufSize > 0 then
  begin
    // Read env var value into result string
    SetLength(Result, BufSize - 1);
    GetEnvironmentVariable(PChar(VarName),
      PChar(Result), BufSize);
  end
  else
    // No such environment variable
    Result := '';
end;

xaromz 8. Okt 2007 10:42

Re: Wohin mit den Logfiles?
 
Hallo,
Zitat:

Zitat von OregonGhost
Wenn ich der Ausgabe von SET trauen darf, wird %APPDATA% bei mir weitergeleitet auf: C:\Users\<Benutzername>\AppData\Roaming.
Roaming ist doch gerade das, wo die alten Anwendungen landen, oder? Ist das das, was man will? Oder ist das vom Manifest abhängig?

nein. Roaming ist der Teil der Einstellungen, der auch auf einen Server ausgelagert werden kann. Dadurch ist es möglich, sich an einem beliebigen Client anzumelden, und immer mit seinem Profil zu arbeiten.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz