Update 20260717
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
using NLog;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
|
||||
namespace GenDocCli
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
private static readonly Logger Logger =
|
||||
LogManager.GetCurrentClassLogger();
|
||||
|
||||
static int Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (args.Length != 8)
|
||||
{
|
||||
Console.WriteLine(
|
||||
"GenDocCli.exe <Verzeichnis> <Logfile> <OKLogFile> <ErrorLogFile> <LogLevel> <Tranchengrösse> <Anzahl ohne Pause> <Pause in Sekunden>");
|
||||
return 1;
|
||||
}
|
||||
|
||||
string directory = args[0];
|
||||
string logFile = args[1];
|
||||
string okLogFile = args[2];
|
||||
string errorLogFile = args[3];
|
||||
string logLevel = args[4];
|
||||
int tranchengroesse = int.Parse(args[5]);
|
||||
int batchSize = int.Parse(args[6]);
|
||||
int pauseSeconds = int.Parse(args[7]);
|
||||
NLogConfigurator.Configure(logFile, logLevel);
|
||||
|
||||
Logger.Info("Programmstart");
|
||||
|
||||
if (!Directory.Exists(directory))
|
||||
{
|
||||
Logger.Error("Verzeichnis existiert nicht: {0}", directory);
|
||||
return 2;
|
||||
}
|
||||
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
var apiClient = new ApiClient();
|
||||
|
||||
string[] files = Directory.GetFiles(directory, "*.json");
|
||||
|
||||
Logger.Info("{0} JSON-Dateien gefunden", files.Length);
|
||||
|
||||
int totalProcessed = 0;
|
||||
int batchCounter = 0;
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
ProcessFile(
|
||||
file,
|
||||
apiClient,
|
||||
okLogFile,
|
||||
errorLogFile);
|
||||
|
||||
totalProcessed++;
|
||||
batchCounter++;
|
||||
|
||||
if (batchCounter >= batchSize)
|
||||
{
|
||||
Logger.Info(
|
||||
"{0} Dateien verarbeitet. Batchgröße {1} erreicht. Pause {2}s.",
|
||||
totalProcessed,
|
||||
batchSize,
|
||||
pauseSeconds);
|
||||
|
||||
Thread.Sleep(TimeSpan.FromSeconds(pauseSeconds));
|
||||
|
||||
batchCounter = 0;
|
||||
}
|
||||
if (totalProcessed > tranchengroesse -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
Logger.Info("Total verarbeitet: {0} Dateien", totalProcessed);
|
||||
Logger.Info("Programmende");
|
||||
|
||||
LogManager.Shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Fatal(ex, "Unerwarteter Fehler");
|
||||
Logger.Error(ex, "Unerwarteter Fehler");
|
||||
return 99;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcessFile(
|
||||
string file,
|
||||
ApiClient apiClient,
|
||||
string okLogFile,
|
||||
string errorLogFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Info("Verarbeite Datei {0}", file);
|
||||
|
||||
string json = File.ReadAllText(file);
|
||||
|
||||
bool success =
|
||||
apiClient.CallGenDoc(json).GetAwaiter().GetResult();
|
||||
|
||||
if (success)
|
||||
{
|
||||
File.AppendAllText(
|
||||
okLogFile,
|
||||
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss};{Path.GetFileName(file)}{Environment.NewLine}");
|
||||
|
||||
RenameFile(file, ".OK");
|
||||
|
||||
Logger.Info(
|
||||
"Datei erfolgreich verarbeitet: {0}",
|
||||
Path.GetFileName(file));
|
||||
}
|
||||
else
|
||||
{
|
||||
File.AppendAllText(
|
||||
errorLogFile,
|
||||
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss};{Path.GetFileName(file)}{Environment.NewLine}");
|
||||
|
||||
RenameFile(file, ".err");
|
||||
|
||||
Logger.Warn(
|
||||
"API meldet Fehler für Datei: {0}",
|
||||
Path.GetFileName(file));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
File.AppendAllText(
|
||||
errorLogFile,
|
||||
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss};{Path.GetFileName(file)};{ex.Message}{Environment.NewLine}");
|
||||
|
||||
RenameFile(file, ".err");
|
||||
|
||||
Logger.Error(ex,
|
||||
"Fehler bei Verarbeitung von {0}",
|
||||
Path.GetFileName(file));
|
||||
}
|
||||
}
|
||||
|
||||
private static void RenameFile(string fileName, string suffix)
|
||||
{
|
||||
string targetFile = fileName + suffix;
|
||||
|
||||
if (File.Exists(targetFile))
|
||||
{
|
||||
File.Delete(targetFile);
|
||||
}
|
||||
|
||||
File.Move(fileName, targetFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user