質問するログイン新規登録

質問編集履歴

3

2017/12/22 01:16

投稿

say5140
say5140

スコア12

title CHANGED
File without changes
body CHANGED
@@ -134,6 +134,12 @@
134
134
  }
135
135
  }
136
136
  ```
137
+
138
+ 呼び出し側の例外時のStackTrace
139
+ オブジェクト参照がオブジェクト インスタンスに設定されていません。
140
+ 場所 xxxx.InitProcess()
141
+ 場所 呼び出し側の関数名
142
+
137
143
  現在、コンソールアプリケーション側で例外をキャッチし、リターンコード99で終了しています。
138
144
  メッセージは「オブジェクト参照がオブジェクト インスタンスに設定されていません。」です。
139
145
  そのため、インスタンス作成がうまくできていないと思っていたのですが、DLL側に調査用のログ出力を

2

2017/12/22 01:16

投稿

say5140
say5140

スコア12

title CHANGED
File without changes
body CHANGED
@@ -58,6 +58,82 @@
58
58
  }
59
59
  }
60
60
  ```
61
+ ```C#
62
+ ファイルの削除(再帰呼び出し)
63
+ public static void DeleteOldLog(string dirPath, int limitSize)
64
+ {
65
+ if (!Directory.Exists(dirPath))
66
+ {
67
+ return;
68
+ }
69
+
70
+ //現在のファイル容量を取得
71
+ var size = GetLogDirSize(dirPath);
72
+ if (size < limitSize)
73
+ {
74
+ return;
75
+ }
76
+
77
+ DirectoryInfo logDirInfo = new DirectoryInfo(dirPath);
78
+ var files = logDirInfo.EnumerateFiles("*", SearchOption.TopDirectoryOnly).ToArray();
79
+
80
+ if (files.Length == 0)
81
+ {
82
+ return;
83
+ }
84
+ else
85
+ {
86
+ //ファイル日付の昇順でソート
87
+ var sortFiles = from file in files
88
+ orderby file.LastWriteTime
89
+ select file.FullName;
90
+
91
+ int dtLen = 14; //yyyyMMddHHmmss
92
+
93
+ //ファイル名のタイムスタンプを見つける
94
+ string timeStamp = string.Empty;
95
+ foreach (var file in sortFiles)
96
+ {
97
+ var fileName = Path.GetFileNameWithoutExtension(file);
98
+ if (fileName.Length >= dtLen)
99
+ {
100
+ //拡張子より前14ケタを取得
101
+ var stIndex = fileName.Length - dtLen; //開始インデックス
102
+ timeStamp = fileName.Substring(stIndex, dtLen);
103
+
104
+ //日付形式か
105
+ if (IsDateTime(timeStamp))
106
+ {
107
+ //日付形式であれば採用
108
+ break;
109
+ }
110
+ else
111
+ {
112
+ timeStamp = string.Empty;
113
+ }
114
+ }
115
+ }
116
+
117
+ //該当なしの場合
118
+ if (timeStamp.Length == 0)
119
+ {
120
+ return;
121
+ }
122
+
123
+ //タイムスタンプでファイル検索
124
+ var search = "*" + timeStamp + "*";
125
+ var delFiles = logDirInfo.EnumerateFiles(search, SearchOption.TopDirectoryOnly).ToArray();
126
+ foreach (var file in delFiles)
127
+ {
128
+ //ファイル削除
129
+ File.Delete(file.FullName);
130
+ }
131
+
132
+ //再帰実行し最大容量を下回るまで繰り返す
133
+ DeleteOldLog(dirPath, limitSize);
134
+ }
135
+ }
136
+ ```
61
137
  現在、コンソールアプリケーション側で例外をキャッチし、リターンコード99で終了しています。
62
138
  メッセージは「オブジェクト参照がオブジェクト インスタンスに設定されていません。」です。
63
139
  そのため、インスタンス作成がうまくできていないと思っていたのですが、DLL側に調査用のログ出力を

1

2017/12/22 01:11

投稿

say5140
say5140

スコア12

title CHANGED
File without changes
body CHANGED
File without changes