ASP.NET파일쓰기/C#TEXT파일/C#파일읽기쓰기방법

 

개발을 하다보면 텍스트 파일에 간단하게 로그를 남기고 싶은 경우가 있다. 

그럴 경우에 아래와 같이 날짜별로 로그파일을 생성해서 남기면 좋다.

경로등은 편하게 사용하면 된다. 

여기서 중요한 부분은 using(StreamWriter file = new StreamWriter(fullPath, true)) 부분이다.

C#에서 using을 사용하는 경우는 별도로 close를 안해줘도 메모리를 반환해주기 때문이다.

 

어쨌든 간단하게 로그를 남기고 확인 할 수 있다.

나의 경우에는 WebAPI를 구성하는데 있어서 클라이언트 개발자가 제대로 호출을 했는지, 파라미터가 제대로 넘어왔는지 확인하기 위해서 아래 함수를 사용하였다.

그럼 모두 즐코딩하세요!

 

public void WriteDateLog(string project, string logGub, string text)
{
    string writeTime = DateTime.Now.ToString("yyyyMMdd HHmmss")
    string fullPath = @"D:\log\" + project + @"\" + DateTime.Now.ToString("yyyyMMdd") + ".txt"
    using (StreamWriter file = new StreamWriter(fullPath, true))
    {
        file.WriteLine(string.Format("{0} :{1}: {2}", writeTime, logGub, text));
    }
}

 

 

DB에서 데이터를 불러와서 뿌려주는 방법은 여러가지가 있지만, asp.net에서는 repeater가 자주 사용된다.

webform 방식으로 구현된 페이지에서 repeater를 사용하는 방법이다.

 

aspx 구현

//aspx 구현부분 
<asp:Repeater ID="rptList" runat="server" onitemdatabound="rptList_ItemDataBound" >
<ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem, "SEQNO")%></td>
                <td class="alignL">
                <a href=''#''  onclick="fnView(''<%# DataBinder.Eval(Container.DataItem, "SEQNO")%>'',''<%=ViewData["PAGE"] %>'',''<%=ViewData["SEARCH_TYPE"] %>'',''<%=ViewData["SEARCH_VALUE"] %>'');">
                <%# DataBinder.Eval(Container.DataItem, "SUBJECT").ToString() %>
                </td>
                <td><%#DataBinder.Eval(Container.DataItem, "WDATE").ToString().Length >= 8 ? DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(0, 4) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(4, 2) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(6, 2) : DataBinder.Eval(Container.DataItem, "WDATE").ToString()%>   </td>
                <td><asp:Label ID="isFile" runat="server"></asp:Label></td>
                <td><%# DataBinder.Eval(Container.DataItem, "VISIT")%></td>
                </tr>                
</ItemTemplate>
</asp:Repeater>

 

aspx.cs 구현

public void InitData(){
    //cs단에서 바인딩 해주는 부분 
    DataTable dt = new DataTable();
    dt = getList(); //각자 바인딩이 필요한 데이터를 불러온다.
    rptList.DataSource = dt.DefaultView;
    rptList.DataBind();
}

//리피터에 바인딩 하면서 데이터를 셋팅 해주는 부분
//db데이터를 그대로 노출하는 경우도 있지만, 셋팅이 필요한 경우가 많기 때문에 자주 사용한다.
protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemIndex != -1)
    {         
        Label lb = (Label)e.Item.FindControl("isFile");
        string FileName = ((System.Data.DataRowView)e.Item.DataItem)["FILENAME"].ToString().Trim();
        if (FileName.Length > 0)
        {
            lb.Text = @"<img src=""/images/icon/icon_disk.gif"" >";
        }
    }
}

SNS 공유와 더불어 자주 사용되는 링크복사입니다.

<input type="hidden" id="hidUrl" value="gyunbox.tistory.com"/>
<script>
	//주소복사
     function TourUrlCopy() {
        var addrTxt = document.getElementById("hidUrl").value;
        //        var isIE = (document.all)?true:false;
        
		var isIE = false;
		var agent = navigator.userAgent.toLowerCase();
		if ( (navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1) ) {
			isIE = true;
		}

        if(isIE){
        if(confirm("이 글의 주소를 클립보드에 복사하시겠습니까?"))
            window.clipboardData.setData("Text",addrTxt);
        }else{
            temp = prompt("Ctrl+C를 눌러 주소를 클립보드로 복사하세요.",addrTxt);
        }
     }
</script>

웹페이지 작업을 하다 보면, 출력 버튼이 있고

출력 버튼 클릭시, 특정 영역의 데이터만 프리트 해야 하는 경우가 있다.

이럴 경우에는 아래 2가지 방법을 활용하면 된다.

특정 div를 출력할때는 divPrint(), 특정 iframe 내용을 출력할때는 iframePrint3()

 

아이프레임 프린트하기/아이프레임출력/특정영역출력/프린트함수/아이프레임프린트

 

<html>
<body>
    <script>

        function divPrint() {
            var inbody = document.body.innerHTML; // 이전 body 영역 저장
            window.onbeforeprint = function () { // 프린트 화면 호출 전 발생하는 이벤트
                document.body.innerHTML = document.getElementById('targetDiv').innerHTML; // 원하는 영역 지정
            }
            window.onafterprint = function () { // 프린트 출력 후 발생하는 이벤트
                document.body.innerHTML = inbody; // 이전 body 영역으로 복구
            }
            window.print();
        }

        function framePrint3() {
            window.frames["frmTest"].focus();
            window.frames["frmTest"].print();
        }
    </script>
    <a href="#" onclick="javascript:divPrint();">특정div출력</a><br />
    <a href="#" onclick="javascript:framePrint3();">아이프레임내용출력</a><br />
    <h1>div 영역</h1>
    <DIV ID="targetDiv" STYLE="BORDER:1PX SOLID RED; WIDTH:500PX; HEIGHT:100PX;FLOAT:LEFT;">
        DIV내용
    </DIV>
    <div id="" style="height:500px; display:block;">
        <h1>아이프레임 영역</h1>
        <iframe src="printinner.asp" id="frmTest" name="frmTest"
            style="width:500px; height:500px; border:1px solid red;float:left; ">
    </div>
</body>
</html>

+ Recent posts