본문 바로가기
Study/C#(Window programming)

cvs파일 로그 저장하기

by Answer Choi 2023. 12. 19.
반응형

cvs로 로그를 저장하는 방법은 여러가지가 있으며, FileStream과 StreamWriter를 이용하여 만들어 보겠습니다.

 

1. 먼저 파일을 만들어 줍니다.

저의 경우 통신이 시작될 때 로그 기록을 위해 파일을 생성하였습니다.

 

파일생성은 FileStream으로 해줍니다.

1
2
3
4
FileStream fs1;
leftFile = "./Log/left_" + DateTime.Now.ToString("yyyyMMddHHmmss"+ ".csv";
fs1 = System.IO.File.Create(leftFile);
fs1.Close();
cs

 

Line 2 : 생성할 파일명을 만들어 줍니다.(저는 현재날짜와 시간이 들어가도록 하였으며, csv파일로 만들도록 하였습니다.

Line 3 : 실제로 파일을 생성합니다.

 

2. 만들어진 파일에 헤더부분을 만들어 줍니다.

열 별로 어떤항목인지 알 수 있도록 헤더부분을 만들어 줍니다.

 

파일 내부에 작성은 StreamWriter를 이용합니다.

1
2
3
4
StreamWriter streamWriter1;
streamWriter1 = new StreamWriter(leftFile);
streamWriter1.WriteLine("No,Voltage(V), Current(A), State, Time(s), DateTime");
streamWriter1.Close();
cs

 

Line 3 : CSV파일을 쉼표로 구분하여, 항목순서, 전압, 전류, 상태, 시간, 현재시간 등을 기록하도록 하였습니다.

Line 4 : 쓸 때마다 close를 하여, 중간에 로깅이 중단되더라도 파일이 깨지지 않도록 하였습니다.

 

3. logging을 합니다.

이제 실제 데이터를 받을 때마다 데이터를 파일에 저장합니다.

1
2
3
streamWriter1 = System.IO.File.AppendText(leftFile);
streamWriter1.WriteLine(++no1 + "," + this.lVolText.Text + "," + this.lCurText.Text + "," + this.lState.Text + "," + ((double)timeCnt1) / 100 + "," + DateTime.Now.ToString("yyyy-MM-d HH:m:ss:fff"));
streamWriter1.Close();
cs

 

Line 1 : AppendText를 사용하여, 앞에 적은 내용의 다음행부터 쓰도록 합니다.

Line 2: 실제 데이터를 쉼표로 구분하여 csv 파일로 저장해 줍니다.

 

실행 모습입니다.

포트를 열면 즉시 파일 로깅을 시작합니다.

 

로깅데이터도 잘 저장이 된 것을 확인할 수 있습니다.

반응형

인기글