Study/C#(Window programming)

cvs파일 로그 저장하기

Answer Choi 2023. 12. 19. 14:39
반응형

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 파일로 저장해 줍니다.

 

실행 모습입니다.

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

 

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

반응형