Pergunta

Eu estou tentando criar um aplicativo de console C # que irá gerar um arquivo de log. Eu gostaria de ter alguma flexibilidade com o local onde o arquivo de log será armazenado.

Eu tentei usar o arquivo Settings.settings com:

Nome: logDrive Tipo: string Alcance: aplicação Valor: C: \ Scripts \ Logs

No meu código, estou usando:

string logFile = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
logFile = logFile.Replace(@"/", @"-").Replace(@"\", @"-") + ".log";
string logDrive = Properties.Settings.Default.logDrive;
StreamWriter output = new StreamWriter(logDrive + logFile);

Ao compilar o acima eu recebo a mensagem de erro "O formato do caminho dado não é apoio."

Se isso ajuda, os valores para:

logDrive = "C: \ Scripts \ ServiceDesk \ Logs" logFile = "2009/03/23 01:20 PM.log"

Alguém tem alguma opinião / recomendações para uma melhor abordagem e / ou o que estou fazendo de errado?

Foi útil?

Solução

Você não pode incluir uma : em um nome de arquivo. Uma abordagem melhor seria usar um formato como

YYYYMMDD_HHMMSS.log

(por exemplo. 20090323_231245.log)

Isto tem a vantagem de ser facilmente classificáveis, e não usar quaisquer caracteres inválidos.

Você pode obter isso usando

string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);

Notas:

Além disso, como sugerido nos comentários, você deve considerar o uso Path.Combine combinar seu diretório e nome do arquivo. Isso ajudará a questões mitigar com finais separadores de caminho, etc.

Outras dicas

Você também vai precisar adicionar uma barra para o seu 'logDrive'. Ou seja:

logDrive = "C:\Scripts\ServiceDesk\Logs\"

.. ou uso Path.Combine como sugerido na outra resposta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top