---
name: "__pmOpenLog"
section: "3"
platform: "linux"
package: "libpcp3-dev"
version: "3.9.10"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/__pmOpenLog"
---

# \_\_pmOpenLog(3)

create a log file for diagnostics and debug output

## NAME

**\_\_pmOpenLog** - create a log file for diagnostics and debug output

## C SYNOPSIS

**#include \<pcp/pmapi.h\>**\
 **#include \<pcp/impl.h\>**

**FILE \*\_\_pmOpenLog(const char \****progname***, const char \****logname***, FILE \****oldstream***, int \****status***);**

**cc ... -lpcp**

## DESCRIPTION

**\_\_pmOpenLog** reassigns the standard I/O stream *oldstream* to be associated with the file *logname*. If it already exists, *logname* will be removed and recreated if possible (to ensure correct ownership and permissions from the caller to **\_\_pmOpenLog**).

On return, the function value is the new standard I/O stream.  In the event of an error, this will be *oldstream* unchanged and *status* will be 0.

For success, *status* is 1, a standard preamble is written to *logname* **Log for** *progname* **on** *hostname* **started** *date and time*\
 and an [**atexit**(3)](/atexit/3.md) handler is installed to write the postscript message to *logname* **Log finished** *date and time*\
 when the processes exits.

*progname* is only used to annotate messages.

## SEE ALSO

[**atexit**(3)](/atexit/3.md) and [**freopen**(3)](/freopen/3.md).
