def log(self, action, extra=None, save=False):
        params = self._log_params()
        # If logging a file-related action, add the file's view and download URLs
        if self.path:
            params.update({
                'urls': {
                    'view': self.node.web_url_for('addon_view_or_download_file', path=self.path, provider=self.addon_short_name),
                    'download': self.node.web_url_for(
                        'addon_view_or_download_file',
                        path=self.path,
                        provider=self.addon_short_name
                    )
                },
                'path': self.path,
            })
        if extra:
            params.update(extra)

        self.node.add_log(
            action="{0}_{1}".format(self.addon_short_name, action),
            params=params,
            auth=self.auth
        )
        if save:
            self.node.save()
Log an event. Wraps the Node#add_log method, automatically adding
dataset/ETHPy150Open CenterForOpenScience/osf.io/website/addons/base/logger.py/AddonNodeLogger.log