Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add file_name in LogWriter() for rewriting. #764

Merged
merged 2 commits into from
Aug 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class LogWriter(logdir=None,
filename_suffix='',
write_to_disk=True,
display_name='',
file_name='',
**kwargs)
```

Expand All @@ -110,6 +111,7 @@ class LogWriter(logdir=None,
| filename_suffix | string | 为默认的日志文件名添加后缀 |
| write_to_disk | boolean | 是否写入到磁盘 |
| display_name | string | 在面板中替换实际显示的`logdir`,当日志所在路径过长或想隐藏日志所在路径时可指定此参数 |
| file_name | string | 指定写入的日志文件名,如果指定的文件名已经存在,则将日志续写在此文件中,文件名必须包括`vdlrecords` |

#### 示例

Expand Down
22 changes: 13 additions & 9 deletions visualdl/io/bfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ def append(self, filename, file_content, binary_mode=False):
self._write(filename, file_content, "ab" if binary_mode else "a")

def write(self, filename, file_content, binary_mode=False):
self._write(filename, file_content, "wb" if binary_mode else "w")
self._write(filename, file_content, "ab" if binary_mode else "a")
# self._write(filename, file_content, "wb" if binary_mode else "w")

def walk(self, dir):
if 'posix' == os.name:
Expand Down Expand Up @@ -187,7 +188,8 @@ def append(self, filename, file_content, binary_mode=False):
self.cli.write(hdfs_path=filename[7:], data=file_content, append=True)

def write(self, filename, file_content, binary_mode=False):
self.cli.write(hdfs_path=filename[7:], data=file_content)
self.cli.write(hdfs_path=filename[7:], data=file_content, append=True)
# self.cli.write(hdfs_path=filename[7:], data=file_content)

def walk(self, dir):
walks = self.cli.walk(hdfs_path=dir[7:])
Expand Down Expand Up @@ -326,13 +328,15 @@ def append(self, filename, file_content, binary_mode=False, force=False):
self._start_append_time = time.time()

def write(self, filename, file_content, binary_mode=False):
bucket_name, object_key = BosFileSystem._get_object_info(filename)

self.bos_client.append_object(bucket_name=bucket_name,
key=object_key,
data=file_content,
content_md5=content_md5(file_content),
content_length=len(file_content))
self.append(filename, file_content, binary_mode=False)

# bucket_name, object_key = BosFileSystem._get_object_info(filename)
#
# self.bos_client.append_object(bucket_name=bucket_name,
# key=object_key,
# data=file_content,
# content_md5=content_md5(file_content),
# content_length=len(file_content))

def walk(self, dir):
class WalkGenerator():
Expand Down
25 changes: 22 additions & 3 deletions visualdl/writer/record_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,28 @@ class RecordFileWriter(object):
file.
"""
def __init__(self, logdir, max_queue_size=10, flush_secs=120,
filename_suffix=''):
filename_suffix='', filename=''):
self._logdir = logdir
if not bfile.exists(logdir):
bfile.makedirs(logdir)
self._file_name = bfile.join(logdir, "vdlrecords.%010d.log%s" % (
time.time(), filename_suffix))

if filename:
if 'vdlrecords' in filename:
self._file_name = bfile.join(logdir, filename)
if bfile.exists(self._file_name):
print(
'`{}` is exists, VisualDL will add logs to it.'.format(
self._file_name))
else:
fn = "vdlrecords.%010d.log%s" % (time.time(), filename_suffix)
self._file_name = bfile.join(logdir, fn)
print(
'Since the log filename should contain `vdlrecords`, the filename is invalid and `{}` will replace `{}`'.format(
fn, filename))
else:
self._file_name = bfile.join(logdir, "vdlrecords.%010d.log%s" % (
time.time(), filename_suffix))

self._general_file_writer = bfile.BFile(self._file_name, "wb")
self._async_writer = _AsyncWriter(RecordWriter(
self._general_file_writer), max_queue_size, flush_secs)
Expand All @@ -91,6 +107,9 @@ def __init__(self, logdir, max_queue_size=10, flush_secs=120,
def get_logdir(self):
return self._logdir

def get_filename(self):
return self._file_name

def add_record(self, record):
if not isinstance(record, record_pb2.Record):
raise TypeError("Expected an record_pb2.Record proto, "
Expand Down
9 changes: 8 additions & 1 deletion visualdl/writer/writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def __init__(self,
filename_suffix='',
write_to_disk=True,
display_name='',
file_name='',
**kwargs):
"""Create a instance of class `LogWriter` and create a vdl log file with
given args.
Expand Down Expand Up @@ -94,6 +95,7 @@ def __init__(self,
self._filename_suffix = filename_suffix
self._write_to_disk = write_to_disk
self.kwargs = kwargs
self._file_name = file_name
nepeplwu marked this conversation as resolved.
Show resolved Hide resolved

self._file_writer = None
self._all_writers = {}
Expand All @@ -116,10 +118,15 @@ def _get_file_writer(self):
logdir=self._logdir,
max_queue_size=self._max_queue,
flush_secs=self._flush_secs,
filename_suffix=self._filename_suffix)
filename_suffix=self._filename_suffix,
filename=self._file_name)
self._all_writers.update({self._logdir: self._file_writer})
return self._file_writer

@property
def file_name(self):
return self._file_writer.get_filename()

def add_meta(self, tag='meta_data_tag', display_name='', step=0, walltime=None):
"""Add a meta to vdl record file.

Expand Down