C#で、以下のような処理が入ってる書いたプログラムソースがあります
(省略)
try
{
(省略)
}
catch(Exception ex)
{
MessageBox.Show("失敗");
using (StreamWriter js = new StreamWriter($"error.log", true))
{
js.Write(DateTime.Now.ToString("g") + ex.ToString() + "\n");
}
return;
}
(省略)
VisualStudioでリリースビルドしたexeファイルを他の人のPC上で実行させて、この処理が動いた際、error.logに以下が書き込まれてました
2024/06/01 11:50 省略
~ Button_Click(Object sender, RoutedEventArgs e) in
C:\work\001\002\code\Tool\Tool\OutPut.xaml.cs:line 1512
error.log
に出てきたファイルパスは、自分がこのプログラムを作成した時のファイルパスだと思います
どのファイルがどの行でエラー出したかが分かりやすくて良いのですが、作成時のファイルパスが入ってるのがなんか嫌です
これって ex.ToString()
の処理で書き込まれた部分ですが、ファイルパスは出さないようにできますか?
No.5ベストアンサー
- 回答日時:
できません。
コンパイル時のデバッグシンボルなので、一般的にはリリースコンパイル時にデバッグシンボルは含めないことがほとんどです。
よほど本番環境でバカスカエラーを吐くような質の悪いものを提供しているような環境なら別でしょうけど。
その場合、色々な作業をする上でエンドユーザー名でフォルダ分けとかしてると思いますが、あまりパス情報に個人のローカルアカウント名やエンドユーザー名とか入れたくありませんよね。
想定外のエラーを捕捉してエラーログを出力するなら、デバッグシンボルによるスタックトレースに頼るのではなく、それ相応の操作されたリクエストログなどを出力するのがよいかと思います。
どうしてもデバッグシンボルからのスタックトレースで出力したいなら、
自前でちょっと加工するしかありませんね。
テキトーに作りましたが、下記の例だと、例外クラスの拡張メソッドを用意してそれを利用することで、簡素的にパス情報を除去します。
コンパイル時のソシューションパス情報は分からないため全部除去します。
そのため、どのフォルダ構成上にあるファイルなのかは分かりません。
js.Write(DateTime.Now.ToString("g") + ex.ToStringWithoutCompiledPath() + "\n");
public static class ExceptionExtension
{
private static readonly Regex FilePathRegex = new Regex(@"(?<=in )(.+)(?=\\.+\.(cs|vb):)", RegexOptions.Compiled);
public static string ToStringWithoutCompiledPath(this Exception exception)
{
var sb = new StringBuilder($"{exception.GetType().FullName}: {exception.Message}{Environment.NewLine}");
if (exception.StackTrace != null)
{
sb.Append(FilePathRegex.Replace(exception.StackTrace, ""));
}
return sb.ToString();
}
}
No.6
- 回答日時:
No2の方のアドバイスに従い、Exception.ToString() で得られた文字列から
C:\work\001\002\code\Tool\Tool\ を削除するようにしました。
以下のようになります。
catch(Exception ex)
{
MessageBox.Show("失敗");
using (StreamWriter js = new StreamWriter($"error.log", true))
{
//変更開始
string msg = ex.ToString();
msg = msg.Replace(@"C:\work\001\002\code\Tool\Tool\", @"");
js.Write(DateTime.Now.ToString("g") + msg + "\n");
//変更終了
}
return;
}
No.4
- 回答日時:
デバッグ情報(*.pdb)を消せば簡単に消えますが、客先で起きた
不具合の解析が非常に困難になります。
ファイルの構成がバレるより1億倍困ります。
私なら決して消しません。消すやつがいたら殴って叩き出します(^^;
現場の人間が途方にくれないようにしましょう。
#昔ファイル名や識別子にプロレスラーの名前を付けるやつがいましたが
#その類でしょうか? あれは恥ずかしいです(^^;
No.3
- 回答日時:
その情報はデバッグ情報が有効な場合に出ます
他の人に渡す場合はデバッグ情報を除いてコード生成しましょう
https://learn.microsoft.com/ja-jp/dotnet/api/sys …
> 呼び出した Environment.StackTrace 結果が取得
https://learn.microsoft.com/ja-jp/dotnet/api/sys …
> at FullClassName.MethodName(MethodParams) in FileName:LineNumber
> デバッグシンボルが使用できない場合は in で始まる部分文字列全体が省略
https://learn.microsoft.com/ja-jp/dotnet/csharp/ …
> -debug: デバッグ情報を生成します (または生成しません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- その他(プログラミング・Web制作) VBAでパワーシェルを実行したいのですが、なかなかうまく出来ず、有識者の知識をお借りさせてください。 2 2024/05/11 00:25
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Visual Basic(VBA) wordのマクロで思うように行きません(ファイル削除ができない) 3 2023/09/12 08:34
- Visual Basic(VBA) VBA一覧取得 再投稿 1 2024/05/25 12:28
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
10進数からN進数に変換するプログラミング(C言語)
C言語・C++・C#
-
CPUが16bitでも32bitOSでコンパイルしたコード(例えばintが4バイトと定義されている)
C言語・C++・C#
-
c言語
C言語・C++・C#
-
-
4
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
5
プログラム言語について c言語もコードによって機械語に通訳されると知りました。直接機械が通訳しなくて
C言語・C++・C#
-
6
0 == False はいいけど
C言語・C++・C#
-
7
プログラムの実行時に'<'でリダイレクトする場合でも、キーボードからの入力を受け取られる件について
C言語・C++・C#
-
8
mallocについて
C言語・C++・C#
-
9
C言語をコンパイルするとコンピュータ上でどう動くかというコードになるみたいな説明をよく聞くのですがこ
C言語・C++・C#
-
10
Linux Cプログラミングを学ぶための書籍
C言語・C++・C#
-
11
右ビットシフト
C言語・C++・C#
-
12
C#,vb.netで業務用アプリ開発とかあると思うんですけど、皆さんどのようなアプリを作ってるのです
C言語・C++・C#
-
13
プログラマーです。このDB設計だと絶対後々面倒なことになるぞ...! って思った時ってどうしたらいい
C言語・C++・C#
-
14
c言語のリダイレクトによる円の描画について
C言語・C++・C#
-
15
c++でテンプレートのコードでわからないことがあります
C言語・C++・C#
-
16
次の日本語の意味を教えて下さい
C言語・C++・C#
-
17
C言語について。
C言語・C++・C#
-
18
プログラミングについて。 1つのループで Aという計算と Bという計算をするのと これらを分けて2つ
C言語・C++・C#
-
19
インクリメント演算子のみを用いて、下に表示されるようにプログラムします 99 100 102 103
C言語・C++・C#
-
20
だれがとけるの?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで、指定し...
-
binファイルを解凍したいの...
-
Seasar2のdiconファイルの読み方
-
コマンドプロンプトで作成日時...
-
reaper音声ファイルについて
-
Latexで図番号だけを「図1.1」...
-
.NETアプリを作ったときの .man...
-
iPhoneでXMLファイルを開くには...
-
【VBA】EXCELブックを開かずに...
-
「ブルーファイル」と「グリー...
-
既に開いているエクセルを閉じ...
-
公文書のxmlファイルの開き方が...
-
jarファイル
-
参照するファイルをワイルドカ...
-
VBAでのicsファイル変換
-
mdsファイルが作成されない
-
VBAのバイナリ出力について
-
VBA : CSV、xlsファイルを内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで作成日時...
-
iPhoneでXMLファイルを開くには...
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
リンクの張り付けかたを教えて...
-
自分で作成した重要ファイルを...
-
C言語---ファイルに出力したデ...
-
exeファイルの中身を見る方法は...
-
Seasar2のdiconファイルの読み方
-
「ブルーファイル」と「グリー...
-
コマンドプロンプトで、指定し...
-
バッチ処理で追記コピーしたい
-
CSSを1ページに1枚作るのって変...
-
warファイルをEclipseでプロジ...
-
監視ツールを入れさせられまし...
おすすめ情報